summaryrefslogtreecommitdiffstats
path: root/nixos/tests/chromium.nix
diff options
context:
space:
mode:
authoraszlig <aszlig@redmoonstudios.org>2016-03-01 00:20:27 +0100
committeraszlig <aszlig@redmoonstudios.org>2016-03-01 01:04:51 +0100
commite45c211b50c6f473e3d92d29e1a8426ec4579f05 (patch)
tree235d1cd423917f184bc0d1404ebd106f4149af91 /nixos/tests/chromium.nix
parent7eea91fbc0efc19f416121369f566c6f5363fbc0 (diff)
nixos/tests/chromium: Split up into subtests
This makes it easier to test just a specific channel rather than to force testing all builds down the users/testers throat. Especially this makes it easier to test NixOS channel upgrades only against the Chromium stable channel instead of just removing the beta/dev channels from the tests entirely (as done in 69ec09f38aa1f1d37baec73ebdf9cf5f21050f94). Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'nixos/tests/chromium.nix')
-rw-r--r--nixos/tests/chromium.nix135
1 files changed, 62 insertions, 73 deletions
diff --git a/nixos/tests/chromium.nix b/nixos/tests/chromium.nix
index 6c61087760dd..974af6888b69 100644
--- a/nixos/tests/chromium.nix
+++ b/nixos/tests/chromium.nix
@@ -1,13 +1,10 @@
-import ./make-test.nix (
-{ pkgs
-, channelMap ? {
- stable = pkgs.chromium;
- #beta = pkgs.chromiumBeta;
- #dev = pkgs.chromiumDev;
- }
-, ...
-}: rec {
- name = "chromium";
+{ system ? builtins.currentSystem }:
+
+with import ../lib/testing.nix { inherit system; };
+with pkgs.lib;
+
+mapAttrs (channel: chromiumPkg: makeTest rec {
+ name = "chromium-${channel}";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ aszlig ];
};
@@ -16,6 +13,7 @@ import ./make-test.nix (
machine.imports = [ ./common/x11.nix ];
machine.virtualisation.memorySize = 2047;
+ machine.environment.systemPackages = [ chromiumPkg ];
startupHTML = pkgs.writeText "chromium-startup.html" ''
<!DOCTYPE html>
@@ -105,74 +103,65 @@ import ./make-test.nix (
closeWin;
}
- sub chromiumTest {
- my ($channel, $pkg, $code) = @_;
- $machine->waitForX;
-
- my $url = "file://${startupHTML}";
- my $args = "--user-data-dir=/tmp/chromium-$channel";
- $machine->execute(
- "ulimit -c unlimited; ".
- "$pkg/bin/chromium $args \"$url\" & disown"
- );
- $machine->waitForText(qr/Type to search or enter a URL to navigate/);
- $machine->waitUntilSucceeds("${xdo "check-startup" ''
- search --sync --onlyvisible --name "startup done"
- # close first start help popup
- key -delay 1000 Escape
+ $machine->waitForX;
+
+ my $url = "file://${startupHTML}";
+ my $args = "--user-data-dir=/tmp/chromium-${channel}";
+ $machine->execute(
+ "ulimit -c unlimited; ".
+ "chromium $args \"$url\" & disown"
+ );
+ $machine->waitForText(qr/Type to search or enter a URL to navigate/);
+ $machine->waitUntilSucceeds("${xdo "check-startup" ''
+ search --sync --onlyvisible --name "startup done"
+ # close first start help popup
+ key -delay 1000 Escape
+ windowfocus --sync
+ windowactivate --sync
+ ''}");
+
+ createAndWaitForNewWin;
+ $machine->screenshot("empty_windows");
+ closeWin;
+
+ $machine->screenshot("startup_done");
+
+ testNewWin "check sandbox", sub {
+ $machine->succeed("${xdo "type-url" ''
+ search --sync --onlyvisible --name "new tab"
windowfocus --sync
- windowactivate --sync
+ type --delay 1000 "chrome://sandbox"
''}");
- createAndWaitForNewWin;
- $machine->screenshot($channel."_emptywin");
- closeWin;
-
- $machine->screenshot($channel."_startup_done");
-
- subtest("Chromium $channel", $code);
-
- $machine->shutdown;
- }
-
- for (${let
- mkArray = name: pkg: "[\"${name}\", \"${pkg}\"]";
- chanArrays = pkgs.lib.mapAttrsToList mkArray channelMap;
- in pkgs.lib.concatStringsSep ", " chanArrays}) {
- my ($channel, $pkg) = @$_;
- chromiumTest $channel, $pkg, sub {
- testNewWin "check sandbox", sub {
- $machine->succeed("${xdo "type-url" ''
- search --sync --onlyvisible --name "new tab"
- windowfocus --sync
- type --delay 1000 "chrome://sandbox"
- ''}");
+ $machine->succeed("${xdo "submit-url" ''
+ search --sync --onlyvisible --name "new tab"
+ windowfocus --sync
+ key --delay 1000 Return
+ ''}");
- $machine->succeed("${xdo "submit-url" ''
- search --sync --onlyvisible --name "new tab"
- windowfocus --sync
- key --delay 1000 Return
- ''}");
+ $machine->screenshot("sandbox_info");
- $machine->screenshot($channel."_sandbox");
+ $machine->succeed("${xdo "submit-url" ''
+ search --sync --onlyvisible --name "sandbox status"
+ windowfocus --sync
+ ''}");
+ $machine->succeed("${xdo "submit-url" ''
+ key --delay 1000 Ctrl+a Ctrl+c
+ ''}");
- $machine->succeed("${xdo "submit-url" ''
- search --sync --onlyvisible --name "sandbox status"
- windowfocus --sync
- ''}");
- $machine->succeed("${xdo "submit-url" ''
- key --delay 1000 Ctrl+a Ctrl+c
- ''}");
+ my $clipboard = $machine->succeed("${pkgs.xclip}/bin/xclip -o");
+ die "sandbox not working properly: $clipboard"
+ unless $clipboard =~ /namespace sandbox.*yes/mi
+ && $clipboard =~ /pid namespaces.*yes/mi
+ && $clipboard =~ /network namespaces.*yes/mi
+ && $clipboard =~ /seccomp.*sandbox.*yes/mi
+ && $clipboard =~ /you are adequately sandboxed/mi;
+ };
- my $clipboard = $machine->succeed("${pkgs.xclip}/bin/xclip -o");
- die "sandbox not working properly: $clipboard"
- unless $clipboard =~ /namespace sandbox.*yes/mi
- && $clipboard =~ /pid namespaces.*yes/mi
- && $clipboard =~ /network namespaces.*yes/mi
- && $clipboard =~ /seccomp.*sandbox.*yes/mi
- && $clipboard =~ /you are adequately sandboxed/mi;
- };
- };
- }
+ $machine->shutdown;
'';
-})
+}) {
+ stable = pkgs.chromium;
+ beta = pkgs.chromiumBeta;
+ dev = pkgs.chromiumDev;
+}