Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions nixos/tests/all-tests.nix
Original file line number Diff line number Diff line change
Expand Up @@ -706,7 +706,7 @@ in {
miniflux = handleTest ./miniflux.nix {};
minio = handleTest ./minio.nix {};
miracle-wm = runTest ./miracle-wm.nix;
miriway = handleTest ./miriway.nix {};
miriway = runTest ./miriway.nix;
misc = handleTest ./misc.nix {};
misskey = handleTest ./misskey.nix {};
mjolnir = handleTest ./matrix/mjolnir.nix {};
Expand All @@ -725,7 +725,7 @@ in {
moodle = handleTest ./moodle.nix {};
moonraker = handleTest ./moonraker.nix {};
mopidy = handleTest ./mopidy.nix {};
morph-browser = handleTest ./morph-browser.nix { };
morph-browser = runTest ./morph-browser.nix;
morty = handleTest ./morty.nix {};
mosquitto = handleTest ./mosquitto.nix {};
moosefs = handleTest ./moosefs.nix {};
Expand Down
260 changes: 129 additions & 131 deletions nixos/tests/miriway.nix
Original file line number Diff line number Diff line change
@@ -1,148 +1,146 @@
import ./make-test-python.nix (
{ pkgs, lib, ... }:
{
name = "miriway";

meta = {
maintainers = with lib.maintainers; [ OPNA2608 ];
};

nodes.machine =
{ config, ... }:
{
imports = [
./common/auto.nix
./common/user-account.nix
];

# Seems to very rarely get interrupted by oom-killer
virtualisation.memorySize = 2047;
{ pkgs, lib, ... }:
{
name = "miriway";

meta = {
maintainers = with lib.maintainers; [ OPNA2608 ];
};

nodes.machine =
{ config, ... }:
{
imports = [
./common/auto.nix
./common/user-account.nix
];

# Seems to very rarely get interrupted by oom-killer
virtualisation.memorySize = 2047;

test-support.displayManager.auto = {
enable = true;
user = "alice";
};

test-support.displayManager.auto = {
enable = true;
user = "alice";
};
programs.ydotool.enable = true;

programs.ydotool.enable = true;
services.xserver.enable = true;
services.displayManager.defaultSession = lib.mkForce "miriway";

services.xserver.enable = true;
services.displayManager.defaultSession = lib.mkForce "miriway";
programs.miriway = {
enable = true;
config = ''
add-wayland-extensions=all
enable-x11=

programs.miriway = {
enable = true;
config = ''
add-wayland-extensions=all
enable-x11=
ctrl-alt=t:foot --maximized
ctrl-alt=a:env WINIT_UNIX_BACKEND=x11 WAYLAND_DISPLAY= alacritty --option window.startup_mode=\"maximized\"

ctrl-alt=t:foot --maximized
ctrl-alt=a:env WINIT_UNIX_BACKEND=x11 WAYLAND_DISPLAY= alacritty --option window.startup_mode=\"maximized\"
shell-component=dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY

shell-component=dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY
shell-component=foot --maximized
'';
};

shell-component=foot --maximized
'';
environment = {
shellAliases = {
test-wayland = "wayland-info | tee /tmp/test-wayland.out && touch /tmp/test-wayland-exit-ok";
test-x11 = "glinfo | tee /tmp/test-x11.out && touch /tmp/test-x11-exit-ok";
};

environment = {
shellAliases = {
test-wayland = "wayland-info | tee /tmp/test-wayland.out && touch /tmp/test-wayland-exit-ok";
test-x11 = "glinfo | tee /tmp/test-x11.out && touch /tmp/test-x11-exit-ok";
};
systemPackages = with pkgs; [
mesa-demos
wayland-utils
foot
alacritty
];

systemPackages = with pkgs; [
mesa-demos
wayland-utils
foot
alacritty
];

# To help with OCR
etc."xdg/foot/foot.ini".source = (pkgs.formats.ini { }).generate "foot.ini" {
main = {
font = "inconsolata:size=16";
};
colors = rec {
foreground = "000000";
background = "ffffff";
regular2 = foreground;
};
# To help with OCR
etc."xdg/foot/foot.ini".source = (pkgs.formats.ini { }).generate "foot.ini" {
main = {
font = "inconsolata:size=16";
};
etc."xdg/alacritty/alacritty.toml".source = (pkgs.formats.toml { }).generate "alacritty.toml" {
font = rec {
normal.family = "Inconsolata";
bold.family = normal.family;
italic.family = normal.family;
bold_italic.family = normal.family;
size = 16;
colors = rec {
foreground = "000000";
background = "ffffff";
regular2 = foreground;
};
};
etc."xdg/alacritty/alacritty.toml".source = (pkgs.formats.toml { }).generate "alacritty.toml" {
font = rec {
normal.family = "Inconsolata";
bold.family = normal.family;
italic.family = normal.family;
bold_italic.family = normal.family;
size = 16;
};
colors = rec {
primary = {
foreground = "0x000000";
background = "0xffffff";
};
colors = rec {
primary = {
foreground = "0x000000";
background = "0xffffff";
};
normal = {
green = primary.foreground;
};
normal = {
green = primary.foreground;
};
};
};

fonts.packages = [ pkgs.inconsolata ];
};

enableOCR = true;

testScript =
{ nodes, ... }:
''
start_all()
machine.wait_for_unit("multi-user.target")

# Wait for Miriway to complete startup
machine.wait_for_file("/run/user/1000/wayland-0")
machine.succeed("pgrep miriway-shell")
machine.screenshot("miriway_launched")

# Test Wayland
# We let Miriway start the first terminal, as we might get stuck if it's not ready to process the first keybind
# machine.send_key("ctrl-alt-t")
machine.wait_for_text(r"(alice|machine)")
machine.send_chars("test-wayland\n")
machine.wait_for_file("/tmp/test-wayland-exit-ok")
machine.copy_from_vm("/tmp/test-wayland.out")
machine.screenshot("foot_wayland_info")

# please actually register that we want to close the window
machine.succeed("ydotool mousemove -- 10 10")
machine.sleep(3)

machine.send_chars("exit\n")

# please actually register that we want to close the window
machine.succeed("ydotool mousemove -- 10 10")
machine.sleep(3)

machine.wait_until_fails("pgrep foot")

# Test XWayland
machine.send_key("ctrl-alt-a")
machine.wait_for_text(r"(alice|machine)")
machine.send_chars("test-x11\n")
machine.wait_for_file("/tmp/test-x11-exit-ok")
machine.copy_from_vm("/tmp/test-x11.out")
machine.screenshot("alacritty_glinfo")

# please actually register that we want to close the window
machine.succeed("ydotool mousemove -- 10 10")
machine.sleep(3)

machine.send_chars("exit\n")

# please actually register that we want to close the window
machine.succeed("ydotool mousemove -- 10 10")
machine.sleep(3)

machine.wait_until_fails("pgrep alacritty")
'';
}
)
fonts.packages = [ pkgs.inconsolata ];
};

enableOCR = true;

testScript =
{ nodes, ... }:
''
start_all()
machine.wait_for_unit("multi-user.target")

# Wait for Miriway to complete startup
machine.wait_for_file("/run/user/1000/wayland-0")
machine.succeed("pgrep miriway-shell")
machine.screenshot("miriway_launched")

# Test Wayland
# We let Miriway start the first terminal, as we might get stuck if it's not ready to process the first keybind
# machine.send_key("ctrl-alt-t")
machine.wait_for_text(r"(alice|machine)")
machine.send_chars("test-wayland\n")
machine.wait_for_file("/tmp/test-wayland-exit-ok")
machine.copy_from_vm("/tmp/test-wayland.out")
machine.screenshot("foot_wayland_info")

# please actually register that we want to close the window
machine.succeed("ydotool mousemove -- 10 10")
machine.sleep(3)

machine.send_chars("exit\n")

# please actually register that we want to close the window
machine.succeed("ydotool mousemove -- 10 10")
machine.sleep(3)

machine.wait_until_fails("pgrep foot")

# Test XWayland
machine.send_key("ctrl-alt-a")
machine.wait_for_text(r"(alice|machine)")
machine.send_chars("test-x11\n")
machine.wait_for_file("/tmp/test-x11-exit-ok")
machine.copy_from_vm("/tmp/test-x11.out")
machine.screenshot("alacritty_glinfo")

# please actually register that we want to close the window
machine.succeed("ydotool mousemove -- 10 10")
machine.sleep(3)

machine.send_chars("exit\n")

# please actually register that we want to close the window
machine.succeed("ydotool mousemove -- 10 10")
machine.sleep(3)

machine.wait_until_fails("pgrep alacritty")
'';
}
92 changes: 45 additions & 47 deletions nixos/tests/morph-browser.nix
Original file line number Diff line number Diff line change
@@ -1,57 +1,55 @@
import ./make-test-python.nix (
{ pkgs, lib, ... }:
{
name = "morph-browser-standalone";
meta.maintainers = lib.teams.lomiri.members;

nodes.machine =
{ config, pkgs, ... }:
{
imports = [
./common/x11.nix
{ pkgs, lib, ... }:
{
name = "morph-browser-standalone";
meta.maintainers = lib.teams.lomiri.members;

nodes.machine =
{ config, pkgs, ... }:
{
imports = [
./common/x11.nix
];

services.xserver.enable = true;

environment = {
systemPackages = with pkgs.lomiri; [
suru-icon-theme
morph-browser
];

services.xserver.enable = true;

environment = {
systemPackages = with pkgs.lomiri; [
suru-icon-theme
morph-browser
];
variables = {
UITK_ICON_THEME = "suru";
};
variables = {
UITK_ICON_THEME = "suru";
};
};

i18n.supportedLocales = [ "all" ];
i18n.supportedLocales = [ "all" ];

fonts.packages = with pkgs; [
# Intended font & helps with OCR
ubuntu-classic
];
};
fonts.packages = with pkgs; [
# Intended font & helps with OCR
ubuntu-classic
];
};

enableOCR = true;
enableOCR = true;

testScript = ''
machine.wait_for_x()
testScript = ''
machine.wait_for_x()

with subtest("morph browser launches"):
machine.execute("morph-browser >&2 &")
machine.wait_for_text(r"Web Browser|New|sites|Bookmarks")
machine.screenshot("morph_open")
with subtest("morph browser launches"):
machine.execute("morph-browser >&2 &")
machine.wait_for_text(r"Web Browser|New|sites|Bookmarks")
machine.screenshot("morph_open")

with subtest("morph browser displays HTML"):
machine.send_chars("file://${pkgs.valgrind.doc}/share/doc/valgrind/html/index.html\n")
machine.wait_for_text("Valgrind Documentation")
machine.screenshot("morph_htmlcontent")
with subtest("morph browser displays HTML"):
machine.send_chars("file://${pkgs.valgrind.doc}/share/doc/valgrind/html/index.html\n")
machine.wait_for_text("Valgrind Documentation")
machine.screenshot("morph_htmlcontent")

machine.succeed("pkill -f morph-browser")
machine.succeed("pkill -f morph-browser")

with subtest("morph browser localisation works"):
machine.execute("env LANG=de_DE.UTF-8 morph-browser >&2 &")
machine.wait_for_text(r"Web-Browser|Neuer|Seiten|Lesezeichen")
machine.screenshot("morph_localised")
'';
}
)
with subtest("morph browser localisation works"):
machine.execute("env LANG=de_DE.UTF-8 morph-browser >&2 &")
machine.wait_for_text(r"Web-Browser|Neuer|Seiten|Lesezeichen")
machine.screenshot("morph_localised")
'';
}