···
1
-
import ./make-test.nix (
4
-
stable = pkgs.chromium;
5
-
#beta = pkgs.chromiumBeta;
6
-
#dev = pkgs.chromiumDev;
1
+
{ system ? builtins.currentSystem }:
3
+
with import ../lib/testing.nix { inherit system; };
6
+
mapAttrs (channel: chromiumPkg: makeTest rec {
7
+
name = "chromium-${channel}";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ aszlig ];
···
machine.imports = [ ./common/x11.nix ];
machine.virtualisation.memorySize = 2047;
16
+
machine.environment.systemPackages = [ chromiumPkg ];
startupHTML = pkgs.writeText "chromium-startup.html" ''
···
109
-
my ($channel, $pkg, $code) = @_;
110
-
$machine->waitForX;
106
+
$machine->waitForX;
112
-
my $url = "file://${startupHTML}";
113
-
my $args = "--user-data-dir=/tmp/chromium-$channel";
115
-
"ulimit -c unlimited; ".
116
-
"$pkg/bin/chromium $args \"$url\" & disown"
118
-
$machine->waitForText(qr/Type to search or enter a URL to navigate/);
119
-
$machine->waitUntilSucceeds("${xdo "check-startup" ''
120
-
search --sync --onlyvisible --name "startup done"
121
-
# close first start help popup
122
-
key -delay 1000 Escape
124
-
windowactivate --sync
108
+
my $url = "file://${startupHTML}";
109
+
my $args = "--user-data-dir=/tmp/chromium-${channel}";
111
+
"ulimit -c unlimited; ".
112
+
"chromium $args \"$url\" & disown"
114
+
$machine->waitForText(qr/Type to search or enter a URL to navigate/);
115
+
$machine->waitUntilSucceeds("${xdo "check-startup" ''
116
+
search --sync --onlyvisible --name "startup done"
117
+
# close first start help popup
118
+
key -delay 1000 Escape
120
+
windowactivate --sync
127
-
createAndWaitForNewWin;
128
-
$machine->screenshot($channel."_emptywin");
123
+
createAndWaitForNewWin;
124
+
$machine->screenshot("empty_windows");
131
-
$machine->screenshot($channel."_startup_done");
127
+
$machine->screenshot("startup_done");
133
-
subtest("Chromium $channel", $code);
129
+
testNewWin "check sandbox", sub {
130
+
$machine->succeed("${xdo "type-url" ''
131
+
search --sync --onlyvisible --name "new tab"
133
+
type --delay 1000 "chrome://sandbox"
135
-
$machine->shutdown;
136
+
$machine->succeed("${xdo "submit-url" ''
137
+
search --sync --onlyvisible --name "new tab"
139
+
key --delay 1000 Return
139
-
mkArray = name: pkg: "[\"${name}\", \"${pkg}\"]";
140
-
chanArrays = pkgs.lib.mapAttrsToList mkArray channelMap;
141
-
in pkgs.lib.concatStringsSep ", " chanArrays}) {
142
-
my ($channel, $pkg) = @$_;
143
-
chromiumTest $channel, $pkg, sub {
144
-
testNewWin "check sandbox", sub {
145
-
$machine->succeed("${xdo "type-url" ''
146
-
search --sync --onlyvisible --name "new tab"
148
-
type --delay 1000 "chrome://sandbox"
142
+
$machine->screenshot("sandbox_info");
151
-
$machine->succeed("${xdo "submit-url" ''
152
-
search --sync --onlyvisible --name "new tab"
154
-
key --delay 1000 Return
157
-
$machine->screenshot($channel."_sandbox");
144
+
$machine->succeed("${xdo "submit-url" ''
145
+
search --sync --onlyvisible --name "sandbox status"
148
+
$machine->succeed("${xdo "submit-url" ''
149
+
key --delay 1000 Ctrl+a Ctrl+c
159
-
$machine->succeed("${xdo "submit-url" ''
160
-
search --sync --onlyvisible --name "sandbox status"
163
-
$machine->succeed("${xdo "submit-url" ''
164
-
key --delay 1000 Ctrl+a Ctrl+c
152
+
my $clipboard = $machine->succeed("${pkgs.xclip}/bin/xclip -o");
153
+
die "sandbox not working properly: $clipboard"
154
+
unless $clipboard =~ /namespace sandbox.*yes/mi
155
+
&& $clipboard =~ /pid namespaces.*yes/mi
156
+
&& $clipboard =~ /network namespaces.*yes/mi
157
+
&& $clipboard =~ /seccomp.*sandbox.*yes/mi
158
+
&& $clipboard =~ /you are adequately sandboxed/mi;
167
-
my $clipboard = $machine->succeed("${pkgs.xclip}/bin/xclip -o");
168
-
die "sandbox not working properly: $clipboard"
169
-
unless $clipboard =~ /namespace sandbox.*yes/mi
170
-
&& $clipboard =~ /pid namespaces.*yes/mi
171
-
&& $clipboard =~ /network namespaces.*yes/mi
172
-
&& $clipboard =~ /seccomp.*sandbox.*yes/mi
173
-
&& $clipboard =~ /you are adequately sandboxed/mi;
161
+
$machine->shutdown;
164
+
stable = pkgs.chromium;
165
+
beta = pkgs.chromiumBeta;
166
+
dev = pkgs.chromiumDev;