Merge pull request #110198 from primeos/chromium-vm-test

nixos/tests/chromium: Add ungoogled-chromium and Google Chrome
This commit is contained in:
Michael Weiss 2021-01-20 20:00:58 +01:00 committed by GitHub
commit 88637a1c33
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 6 deletions

View file

@ -1,10 +1,14 @@
{ system ? builtins.currentSystem { system ? builtins.currentSystem
, config ? {} , config ? {}
, pkgs ? import ../.. { inherit system config; } , pkgs ? import ../.. { inherit system config; }
, channelMap ? { , channelMap ? { # Maps "channels" to packages
stable = pkgs.chromium; stable = pkgs.chromium;
beta = pkgs.chromiumBeta; beta = pkgs.chromiumBeta;
dev = pkgs.chromiumDev; dev = pkgs.chromiumDev;
ungoogled = pkgs.ungoogled-chromium;
chrome-stable = pkgs.google-chrome;
chrome-beta = pkgs.google-chrome-beta;
chrome-dev = pkgs.google-chrome-dev;
} }
}: }:
@ -14,7 +18,7 @@ with pkgs.lib;
mapAttrs (channel: chromiumPkg: makeTest rec { mapAttrs (channel: chromiumPkg: makeTest rec {
name = "chromium-${channel}"; name = "chromium-${channel}";
meta = { meta = {
maintainers = with maintainers; [ aszlig ]; maintainers = with maintainers; [ aszlig primeos ];
# https://github.com/NixOS/hydra/issues/591#issuecomment-435125621 # https://github.com/NixOS/hydra/issues/591#issuecomment-435125621
inherit (chromiumPkg.meta) timeout; inherit (chromiumPkg.meta) timeout;
}; };
@ -58,6 +62,19 @@ mapAttrs (channel: chromiumPkg: makeTest rec {
return "su - ${user} -c " + shlex.quote(cmd) return "su - ${user} -c " + shlex.quote(cmd)
def get_browser_binary():
"""Returns the name of the browser binary."""
pname = "${getName chromiumPkg.name}"
if pname.find("chromium") != -1:
return "chromium" # Same name for all channels and ungoogled-chromium
if pname == "google-chrome":
return "google-chrome-stable"
if pname == "google-chrome-dev":
return "google-chrome-unstable"
# For google-chrome-beta and as fallback:
return pname
def create_new_win(): def create_new_win():
with machine.nested("Creating a new Chromium window"): with machine.nested("Creating a new Chromium window"):
machine.execute( machine.execute(
@ -153,7 +170,14 @@ mapAttrs (channel: chromiumPkg: makeTest rec {
machine.wait_for_x() machine.wait_for_x()
url = "file://${startupHTML}" url = "file://${startupHTML}"
machine.succeed(ru(f'ulimit -c unlimited; chromium "{url}" & disown')) machine.succeed(ru(f'ulimit -c unlimited; "{get_browser_binary()}" "{url}" & disown'))
if get_browser_binary().startswith("google-chrome"):
# Need to click away the first window:
machine.wait_for_text("Make Google Chrome the default browser")
machine.screenshot("google_chrome_default_browser_prompt")
machine.send_key("ret")
machine.wait_for_text("startup done") machine.wait_for_text("startup done")
machine.wait_until_succeeds( machine.wait_until_succeeds(
ru( ru(

View file

@ -36,6 +36,21 @@ update `upstream-info.json`. After updates it is important to test at least
`nixosTests.chromium` (or basic manual testing) and `google-chrome` (which `nixosTests.chromium` (or basic manual testing) and `google-chrome` (which
reuses `upstream-info.json`). reuses `upstream-info.json`).
To run all automated NixOS VM tests for Chromium, ungoogled-chromium,
and Google Chrome (not recommended, currently 6x tests!):
```
nix-build nixos/tests/chromium.nix
```
A single test can be selected, e.g. to test `ungoogled-chromium` (see
`channelMap` in `nixos/tests/chromium.nix` for all available options):
```
nix-build nixos/tests/chromium.nix -A ungoogled
```
(Note: Testing Google Chrome requires `export NIXPKGS_ALLOW_UNFREE=1`.)
For custom builds it's possible to "override" `channelMap`.
## Backports ## Backports
All updates are considered security critical and should be ported to the stable All updates are considered security critical and should be ported to the stable