0
0
mirror of https://github.com/cucumber-sp/yandex-music-linux.git synced 2025-09-28 01:29:03 +03:00

nix: introduce tests

Introduce set of tests based on NixOS test framework.
This commit is contained in:
Yury Shvedov
2025-03-09 16:13:18 +03:00
parent d45af61f82
commit 30847e331a
6 changed files with 218 additions and 9 deletions

62
nix/test-suite.nix Normal file
View File

@@ -0,0 +1,62 @@
/*
This test suite uses nixos common x11 and user-account test configurations.
Those configurations use auto-login to ice-wm desktop manager.
This test configuration enables yandex-music application, launches it and
check for window existence. Additionally it takes screenshot after successful
launch to allow to validate state manually. The result may miss the content
inside window because of lack of GPU support.
TODO(Shvedov): We should to perform automatic checks of screen state.
*/
{
testers,
path,
# The yandex-music module
nixosModule,
# The extra configuration
configuration ? { },
# The extra code of test script
extraTestScript ? "",
# The name of test
name ? "yandex-music-test",
}:
testers.runNixOSTest {
inherit name;
nodes.machine =
let
tests = "${path}/nixos/tests/common/";
user = "alice";
in
{
imports = [
nixosModule
"${tests}/x11.nix"
"${tests}/user-account.nix"
configuration
];
test-support.displayManager.auto.user = user;
programs.yandex-music.enable = true;
};
testScript =
''
# We have to execute command with su beckause all commands performs under
# the root user.
def mk_command(command, tail = "", fork = False):
if fork:
tail = f"{tail} >&2 &"
return f"su -c '{command}' - alice {tail}"
machine.wait_for_x()
machine.execute(mk_command("yandex-music", fork = True))
check_command = mk_command('xwininfo -root -tree', tail = "| grep 'Яндекс Музыка'")
machine.wait_until_succeeds(check_command, 120)
machine.sleep(40)
machine.succeed(check_command)
machine.screenshot("screen")
''
+ extraTestScript;
}