$ /nix/store/wkkwxc04gdw6b263l1h29pjarjnjdyb6-coreutils-9.8/bin/timeout --kill-after=15s 1800s /nix/store/99b1z08awpxj8b6mzggn59gp1shljnff-nix-2.34.5/bin/nix --extra-experimental-features nix-command --extra-experimental-features flakes build --no-link git+https://codeberg.org/mtlynch/little-moments?ref=prefetch&rev=17a3e4a9cd56b43e653e34c1d9bfa06c921832b5#packages.x86_64-linux.e2e-tests --print-build-logs these 2 derivations will be built: /nix/store/5mwzd6wr4lywcggnra2znhnlizsv9scj-little-moments-dev-0.0.1.drv /nix/store/xypcwg7vgxyj7ydmp446n5q7wmpa33ci-little-moments-e2e-0.0.1.drv building '/nix/store/5mwzd6wr4lywcggnra2znhnlizsv9scj-little-moments-dev-0.0.1.drv'... little-moments-dev> Running phase: unpackPhase little-moments-dev> unpacking source archive /nix/store/lg54qr1v2ivj89w2p7vvn0hx8f2xpca9-source little-moments-dev> source root is source little-moments-dev> Running phase: patchPhase little-moments-dev> Running phase: updateAutotoolsGnuConfigScriptsPhase little-moments-dev> Running phase: configurePhase little-moments-dev> Running phase: buildPhase little-moments-dev> Building subPackage ./cmd/app little-moments-dev> Running phase: checkPhase little-moments-dev> ? codeberg.org/mtlynch/little-moments/cmd/app [no test files] little-moments-dev> Running phase: installPhase little-moments-dev> Running phase: fixupPhase little-moments-dev> shrinking RPATHs of ELF executables and libraries in /nix/store/igz3ib0bd4lcdafn4x2fg9h3v8yz320a-little-moments-dev-0.0.1 little-moments-dev> shrinking /nix/store/igz3ib0bd4lcdafn4x2fg9h3v8yz320a-little-moments-dev-0.0.1/bin/app-dev little-moments-dev> patchelf: cannot find section '.dynamic'. The input file is most likely statically linked little-moments-dev> checking for references to /build/ in /nix/store/igz3ib0bd4lcdafn4x2fg9h3v8yz320a-little-moments-dev-0.0.1... little-moments-dev> patchelf: cannot find section '.dynamic'. The input file is most likely statically linked little-moments-dev> patching script interpreter paths in /nix/store/igz3ib0bd4lcdafn4x2fg9h3v8yz320a-little-moments-dev-0.0.1 little-moments-dev> stripping (with command strip and flags -S -p) in /nix/store/igz3ib0bd4lcdafn4x2fg9h3v8yz320a-little-moments-dev-0.0.1/bin little-moments-dev (post)> Uploading paths from nix-ci to the NixCI cache /nix/store/igz3ib0bd4lcdafn4x2fg9h3v8yz320a-little-moments-dev-0.0.1 little-moments-dev (post)> warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead little-moments-dev (post)> copying 1 paths... little-moments-dev (post)> copying path '/nix/store/igz3ib0bd4lcdafn4x2fg9h3v8yz320a-little-moments-dev-0.0.1' to 'https://cache.nix-ci.com'... little-moments-dev (post)> warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead little-moments-dev (post)> copying 0 paths... building '/nix/store/xypcwg7vgxyj7ydmp446n5q7wmpa33ci-little-moments-e2e-0.0.1.drv'... little-moments-e2e> Running phase: unpackPhase little-moments-e2e> unpacking source archive /nix/store/lg54qr1v2ivj89w2p7vvn0hx8f2xpca9-source little-moments-e2e> source root is source little-moments-e2e> Running phase: patchPhase little-moments-e2e> Executing npmConfigHook little-moments-e2e> Configuring npm little-moments-e2e> Validating consistency between /build/source/package-lock.json and /nix/store/s010d1fi38rq6sq05s7jvvqri9dwn7ci-little-moments-e2e-0.0.1-npm-deps/package-lock.json little-moments-e2e> Setting npm_config_cache to /nix/store/s010d1fi38rq6sq05s7jvvqri9dwn7ci-little-moments-e2e-0.0.1-npm-deps little-moments-e2e> Installing dependencies little-moments-e2e> npm warn Unknown env config "nodedir". This will stop working in the next major version of npm. little-moments-e2e> npm warn Unknown env config "platform". This will stop working in the next major version of npm. little-moments-e2e> npm warn Unknown env config "arch". This will stop working in the next major version of npm. little-moments-e2e> little-moments-e2e> added 100 packages, and audited 101 packages in 764ms little-moments-e2e> little-moments-e2e> 25 packages are looking for funding little-moments-e2e> run `npm fund` for details little-moments-e2e> little-moments-e2e> found 0 vulnerabilities little-moments-e2e> patching script interpreter paths in node_modules little-moments-e2e> node_modules/@playwright/test/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" little-moments-e2e> node_modules/acorn/bin/acorn: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" little-moments-e2e> node_modules/playwright/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" little-moments-e2e> node_modules/prettier/bin/prettier.cjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" little-moments-e2e> node_modules/ulid/bin/cli.js: interpreter directive changed from "#! /usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" little-moments-e2e> node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" little-moments-e2e> node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" little-moments-e2e> node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" little-moments-e2e> node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" little-moments-e2e> node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" little-moments-e2e> node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" little-moments-e2e> node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" little-moments-e2e> node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" little-moments-e2e> node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" little-moments-e2e> node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" little-moments-e2e> node_modules/playwright-core/lib/utilsBundleImpl/xdg-open: interpreter directive changed from "#!/bin/sh" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/sh" little-moments-e2e> node_modules/playwright-core/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" little-moments-e2e> node_modules/js-yaml/bin/js-yaml.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" little-moments-e2e> node_modules/which/bin/node-which: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" little-moments-e2e> node_modules/eslint/bin/eslint.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" little-moments-e2e> npm warn Unknown env config "nodedir". This will stop working in the next major version of npm. little-moments-e2e> npm warn Unknown env config "platform". This will stop working in the next major version of npm. little-moments-e2e> npm warn Unknown env config "arch". This will stop working in the next major version of npm. little-moments-e2e> rebuilt dependencies successfully little-moments-e2e> patching script interpreter paths in node_modules little-moments-e2e> Finished npmConfigHook little-moments-e2e> Running phase: updateAutotoolsGnuConfigScriptsPhase little-moments-e2e> Running phase: configurePhase little-moments-e2e> no configure script, doing nothing little-moments-e2e> Running phase: buildPhase little-moments-e2e> no Makefile or custom buildPhase, doing nothing little-moments-e2e> Running phase: checkPhase little-moments-e2e> npm warn Unknown env config "nodedir". This will stop working in the next major version of npm. little-moments-e2e> npm warn Unknown env config "platform". This will stop working in the next major version of npm. little-moments-e2e> npm warn Unknown env config "arch". This will stop working in the next major version of npm. little-moments-e2e> [WebServer] 2026/04/11 15:02:55 codeberg.org/mtlynch/little-moments/cmd/app/main.go:19: starting little-moments server little-moments-e2e> [WebServer] 2026/04/11 15:02:55 codeberg.org/mtlynch/little-moments/store/sqlite/sqlite.go:18: reading DB from testdata/store.db little-moments-e2e> [WebServer] 2026/04/11 15:02:56 codeberg.org/mtlynch/little-moments/handlers/csp.go:43: CSP media origin: "" little-moments-e2e> [WebServer] 2026/04/11 15:02:56 codeberg.org/mtlynch/little-moments/cmd/app/main.go:72: listening on http://localhost:6001 little-moments-e2e> [WebServer] 2026/04/11 15:02:56 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: POST /api/debug/db/per-session 404 19 little-moments-e2e> little-moments-e2e> Running 10 tests using 1 worker little-moments-e2e> Skipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. little-moments-e2e> [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3292 little-moments-e2e> [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 little-moments-e2e> [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 little-moments-e2e> [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 little-moments-e2e> [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 little-moments-e2e> [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 little-moments-e2e> [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 little-moments-e2e> [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 little-moments-e2e> [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 little-moments-e2e> [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 little-moments-e2e> TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. little-moments-e2e> [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 little-moments-e2e> [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 little-moments-e2e> [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 little-moments-e2e> [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 little-moments-e2e> [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 little-moments-e2e> [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 little-moments-e2e> [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 little-moments-e2e> [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 little-moments-e2e> [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 little-moments-e2e> [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 little-moments-e2e> TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. little-moments-e2e> [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 little-moments-e2e> [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 little-moments-e2e> [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 little-moments-e2e> [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 little-moments-e2e> [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 little-moments-e2e> [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 little-moments-e2e> [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 little-moments-e2e> [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 little-moments-e2e> [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 little-moments-e2e> [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 little-moments-e2e> TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. little-moments-e2e> [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 little-moments-e2e> [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 little-moments-e2e> [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 little-moments-e2e> [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 little-moments-e2e> [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 little-moments-e2e> [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 little-moments-e2e> [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 little-moments-e2e> [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 little-moments-e2e> [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 little-moments-e2e> [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 little-moments-e2e> TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. little-moments-e2e> [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 little-moments-e2e> [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 little-moments-e2e> [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 little-moments-e2e> [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 little-moments-e2e> [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 little-moments-e2e> [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 little-moments-e2e> [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 little-moments-e2e> [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 little-moments-e2e> [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 little-moments-e2e> [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 little-moments-e2e> TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. little-moments-e2e> [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3292 little-moments-e2e> [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 little-moments-e2e> [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 little-moments-e2e> [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 little-moments-e2e> [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 little-moments-e2e> [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 little-moments-e2e> [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 little-moments-e2e> [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 little-moments-e2e> [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 little-moments-e2e> [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 little-moments-e2e> TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3292 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 little-moments-e2e> [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 little-moments-e2e> TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. little-moments-e2e> [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 little-moments-e2e> [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 little-moments-e2e> [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 little-moments-e2e> [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 little-moments-e2e> [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 little-moments-e2e> [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 little-moments-e2e> [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 little-moments-e2e> [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 little-moments-e2e> [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 little-moments-e2e> [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 little-moments-e2e> TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. little-moments-e2e> [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3292 little-moments-e2e> [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 little-moments-e2e> [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 little-moments-e2e> [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 little-moments-e2e> [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 little-moments-e2e> [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 little-moments-e2e> [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 little-moments-e2e> [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 little-moments-e2e> [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 little-moments-e2e> [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 little-moments-e2e> TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. little-moments-e2e> [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 little-moments-e2e> [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 little-moments-e2e> [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 little-moments-e2e> [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 little-moments-e2e> [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 little-moments-e2e> [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 little-moments-e2e> [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 little-moments-e2e> [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 little-moments-e2e> [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 little-moments-e2e> [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 little-moments-e2e> T little-moments-e2e> little-moments-e2e> 1) [chromium] › e2e/browse.spec.ts:66:7 › Browse media › shows the imported media entries on the browse page little-moments-e2e> little-moments-e2e> Test timeout of 5000ms exceeded. little-moments-e2e> little-moments-e2e> Error: expect(locator).toHaveCount(expected) failed little-moments-e2e> little-moments-e2e> Locator: getByRole('main').getByRole('link') little-moments-e2e> Expected: 5 little-moments-e2e> Received: 0 little-moments-e2e> little-moments-e2e> Call log: little-moments-e2e> - Expect "toHaveCount" with timeout 5000ms little-moments-e2e> - waiting for getByRole('main').getByRole('link') little-moments-e2e> 9 × locator resolved to 0 elements little-moments-e2e> - unexpected value "0" little-moments-e2e> little-moments-e2e> little-moments-e2e> 69 | const mediaLinks = page.getByRole("main").getByRole("link"); little-moments-e2e> 70 | little-moments-e2e> > 71 | await expect(mediaLinks).toHaveCount(5); little-moments-e2e> | ^ little-moments-e2e> 72 | await expect(mediaLinks.nth(0)).toBeVisible(); little-moments-e2e> 73 | await expect(mediaLinks.nth(1)).toBeVisible(); little-moments-e2e> 74 | await expect(mediaLinks.nth(2)).toBeVisible(); little-moments-e2e> at /build/source/e2e/browse.spec.ts:71:30 little-moments-e2e> little-moments-e2e> attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-shows--02a6e--entries-on-the-browse-page-chromium/video.webm little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> Error Context: e2e-results/browse-Browse-media-shows--02a6e--entries-on-the-browse-page-chromium/error-context.md little-moments-e2e> little-moments-e2e> attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-shows--02a6e--entries-on-the-browse-page-chromium/trace.zip little-moments-e2e> Usage: little-moments-e2e> little-moments-e2e> npx playwright show-trace e2e-results/browse-Browse-media-shows--02a6e--entries-on-the-browse-page-chromium/trace.zip little-moments-e2e> little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> 2) [chromium] › e2e/browse.spec.ts:79:7 › Browse media › shows media thumbnails from newest to oldest little-moments-e2e> little-moments-e2e> Test timeout of 5000ms exceeded. little-moments-e2e> little-moments-e2e> Error: expect(locator).toHaveCount(expected) failed little-moments-e2e> little-moments-e2e> Locator: getByRole('main').getByRole('link') little-moments-e2e> Expected: 5 little-moments-e2e> Received: 0 little-moments-e2e> little-moments-e2e> Call log: little-moments-e2e> - Expect "toHaveCount" with timeout 5000ms little-moments-e2e> - waiting for getByRole('main').getByRole('link') little-moments-e2e> 9 × locator resolved to 0 elements little-moments-e2e> - unexpected value "0" little-moments-e2e> little-moments-e2e> little-moments-e2e> 80 | const mediaLinks = page.getByRole("main").getByRole("link"); little-moments-e2e> 81 | little-moments-e2e> > 82 | await expect(mediaLinks).toHaveCount(5); little-moments-e2e> | ^ little-moments-e2e> 83 | await expect(mediaLinks.nth(0)).toHaveAttribute("href", "/m/1000"); little-moments-e2e> 84 | await expect(mediaLinks.nth(1)).toHaveAttribute("href", "/m/1001"); little-moments-e2e> 85 | await expect(mediaLinks.nth(2)).toHaveAttribute("href", "/m/1002"); little-moments-e2e> at /build/source/e2e/browse.spec.ts:82:30 little-moments-e2e> little-moments-e2e> attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-shows--19f8f-nails-from-newest-to-oldest-chromium/video.webm little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> Error Context: e2e-results/browse-Browse-media-shows--19f8f-nails-from-newest-to-oldest-chromium/error-context.md little-moments-e2e> little-moments-e2e> attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-shows--19f8f-nails-from-newest-to-oldest-chromium/trace.zip little-moments-e2e> Usage: little-moments-e2e> little-moments-e2e> npx playwright show-trace e2e-results/browse-Browse-media-shows--19f8f-nails-from-newest-to-oldest-chromium/trace.zip little-moments-e2e> little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> 3) [chromium] › e2e/browse.spec.ts:90:7 › Browse media › shows a video indicator on video thumbnails only little-moments-e2e> little-moments-e2e> Test timeout of 5000ms exceeded. little-moments-e2e> little-moments-e2e> Error: expect(locator).toHaveCount(expected) failed little-moments-e2e> little-moments-e2e> Locator: getByRole('main').getByRole('link') little-moments-e2e> Expected: 5 little-moments-e2e> Received: 0 little-moments-e2e> little-moments-e2e> Call log: little-moments-e2e> - Expect "toHaveCount" with timeout 5000ms little-moments-e2e> - waiting for getByRole('main').getByRole('link') little-moments-e2e> 9 × locator resolved to 0 elements little-moments-e2e> - unexpected value "0" little-moments-e2e> little-moments-e2e> little-moments-e2e> 91 | const mediaLinks = page.getByRole("main").getByRole("link"); little-moments-e2e> 92 | little-moments-e2e> > 93 | await expect(mediaLinks).toHaveCount(5); little-moments-e2e> | ^ little-moments-e2e> 94 | await expect( little-moments-e2e> 95 | mediaLinks.nth(0).getByTestId("video-thumbnail-indicator"), little-moments-e2e> 96 | ).toHaveCount(0); little-moments-e2e> at /build/source/e2e/browse.spec.ts:93:30 little-moments-e2e> little-moments-e2e> attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-shows--c7537-or-on-video-thumbnails-only-chromium/video.webm little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> Error Context: e2e-results/browse-Browse-media-shows--c7537-or-on-video-thumbnails-only-chromium/error-context.md little-moments-e2e> little-moments-e2e> attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-shows--c7537-or-on-video-thumbnails-only-chromium/trace.zip little-moments-e2e> Usage: little-moments-e2e> little-moments-e2e> npx playwright show-trace e2e-results/browse-Browse-media-shows--c7537-or-on-video-thumbnails-only-chromium/trace.zip little-moments-e2e> little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> 4) [chromium] › e2e/browse.spec.ts:111:7 › Browse media › opens the first entry from the browse page and shows its details little-moments-e2e> little-moments-e2e> Test timeout of 5000ms exceeded. little-moments-e2e> little-moments-e2e> Error: locator.click: Test timeout of 5000ms exceeded. little-moments-e2e> Call log: little-moments-e2e> - waiting for getByRole('main').getByRole('link').first() little-moments-e2e> little-moments-e2e> little-moments-e2e> 114 | const mediaLinks = page.getByRole("main").getByRole("link"); little-moments-e2e> 115 | little-moments-e2e> > 116 | await mediaLinks.nth(0).click(); little-moments-e2e> | ^ little-moments-e2e> 117 | little-moments-e2e> 118 | const content = page.getByRole("main"); little-moments-e2e> 119 | little-moments-e2e> at /build/source/e2e/browse.spec.ts:116:29 little-moments-e2e> little-moments-e2e> attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-opens--542e7--page-and-shows-its-details-chromium/video.webm little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> Error Context: e2e-results/browse-Browse-media-opens--542e7--page-and-shows-its-details-chromium/error-context.md little-moments-e2e> little-moments-e2e> attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-opens--542e7--page-and-shows-its-details-chromium/trace.zip little-moments-e2e> Usage: little-moments-e2e> little-moments-e2e> npx playwright show-trace e2e-results/browse-Browse-media-opens--542e7--page-and-shows-its-details-chromium/trace.zip little-moments-e2e> little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> 5) [chromium] › e2e/browse.spec.ts:133:7 › Browse media › moves through adjacent entries with Previous and Next links little-moments-e2e> little-moments-e2e> Test timeout of 5000ms exceeded. little-moments-e2e> little-moments-e2e> Error: locator.click: Test timeout of 5000ms exceeded. little-moments-e2e> Call log: little-moments-e2e> - waiting for getByRole('main').getByRole('link').nth(1) little-moments-e2e> little-moments-e2e> little-moments-e2e> 136 | const mediaLinks = page.getByRole("main").getByRole("link"); little-moments-e2e> 137 | little-moments-e2e> > 138 | await mediaLinks.nth(1).click(); little-moments-e2e> | ^ little-moments-e2e> 139 | await page.getByRole("main").getByRole("link", { name: "Next" }).click(); little-moments-e2e> 140 | little-moments-e2e> 141 | const content = page.getByRole("main"); little-moments-e2e> at /build/source/e2e/browse.spec.ts:138:29 little-moments-e2e> little-moments-e2e> attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-moves--c86ee-ith-Previous-and-Next-links-chromium/video.webm little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> Error Context: e2e-results/browse-Browse-media-moves--c86ee-ith-Previous-and-Next-links-chromium/error-context.md little-moments-e2e> little-moments-e2e> attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-moves--c86ee-ith-Previous-and-Next-links-chromium/trace.zip little-moments-e2e> Usage: little-moments-e2e> little-moments-e2e> npx playwright show-trace e2e-results/browse-Browse-media-moves--c86ee-ith-Previous-and-Next-links-chromium/trace.zip little-moments-e2e> little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> 6) [chromium] › e2e/browse.spec.ts:164:7 › Browse media › moves through adjacent entries with left and right arrow keys little-moments-e2e> little-moments-e2e> Test timeout of 5000ms exceeded. little-moments-e2e> little-moments-e2e> Error: locator.click: Test timeout of 5000ms exceeded. little-moments-e2e> Call log: little-moments-e2e> - waiting for getByRole('main').getByRole('link').nth(2) little-moments-e2e> little-moments-e2e> little-moments-e2e> 167 | const mediaLinks = page.getByRole("main").getByRole("link"); little-moments-e2e> 168 | little-moments-e2e> > 169 | await mediaLinks.nth(2).click(); little-moments-e2e> | ^ little-moments-e2e> 170 | little-moments-e2e> 171 | await expect(page).toHaveURL("/m/1002"); little-moments-e2e> 172 | await expect(page.getByRole("main")).toContainText("test video #1"); little-moments-e2e> at /build/source/e2e/browse.spec.ts:169:29 little-moments-e2e> little-moments-e2e> attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-moves--d7942-h-left-and-right-arrow-keys-chromium/video.webm little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> Error Context: e2e-results/browse-Browse-media-moves--d7942-h-left-and-right-arrow-keys-chromium/error-context.md little-moments-e2e> little-moments-e2e> attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-moves--d7942-h-left-and-right-arrow-keys-chromium/trace.zip little-moments-e2e> Usage: little-moments-e2e> little-moments-e2e> npx playwright show-trace e2e-results/browse-Browse-media-moves--d7942-h-left-and-right-arrow-keys-chromium/trace.zip little-moments-e2e> little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> 7) [chromium] › e2e/browse.spec.ts:185:7 › Browse media › moves through adjacent entries with swipe gestures on mobile little-moments-e2e> little-moments-e2e> Test timeout of 5000ms exceeded. little-moments-e2e> little-moments-e2e> Error: locator.click: Test ended. little-moments-e2e> Call log: little-moments-e2e> - waiting for getByRole('main').getByRole('link').nth(2) little-moments-e2e> little-moments-e2e> little-moments-e2e> 193 | little-moments-e2e> 194 | await mobilePage.goto("/"); little-moments-e2e> > 195 | await mobilePage.getByRole("main").getByRole("link").nth(2).click(); little-moments-e2e> | ^ little-moments-e2e> 196 | await expect(mobilePage).toHaveURL("/m/1002"); little-moments-e2e> 197 | await expect(mobilePage.getByRole("main")).toContainText("test video #1"); little-moments-e2e> 198 | little-moments-e2e> at /build/source/e2e/browse.spec.ts:195:65 little-moments-e2e> little-moments-e2e> attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-moves--23055-th-swipe-gestures-on-mobile-chromium/video.webm little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> Error Context: e2e-results/browse-Browse-media-moves--23055-th-swipe-gestures-on-mobile-chromium/error-context.md little-moments-e2e> little-moments-e2e> attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-moves--23055-th-swipe-gestures-on-mobile-chromium/trace.zip little-moments-e2e> Usage: little-moments-e2e> little-moments-e2e> npx playwright show-trace e2e-results/browse-Browse-media-moves--23055-th-swipe-gestures-on-mobile-chromium/trace.zip little-moments-e2e> little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> 8) [chromium] › e2e/browse.spec.ts:212:7 › Browse media › shows the current media position within the full list little-moments-e2e> little-moments-e2e> Test timeout of 5000ms exceeded. little-moments-e2e> little-moments-e2e> Error: locator.click: Test timeout of 5000ms exceeded. little-moments-e2e> Call log: little-moments-e2e> - waiting for getByRole('main').getByRole('link').first() little-moments-e2e> little-moments-e2e> little-moments-e2e> 215 | let mediaLinks = page.getByRole("main").getByRole("link"); little-moments-e2e> 216 | little-moments-e2e> > 217 | await mediaLinks.nth(0).click(); little-moments-e2e> | ^ little-moments-e2e> 218 | await expect(page.getByRole("main")).toContainText("1 of 5"); little-moments-e2e> 219 | little-moments-e2e> 220 | await page.getByRole("main").getByRole("link", { name: "Next" }).click(); little-moments-e2e> at /build/source/e2e/browse.spec.ts:217:29 little-moments-e2e> little-moments-e2e> attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-shows--fa2ac-sition-within-the-full-list-chromium/video.webm little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> Error Context: e2e-results/browse-Browse-media-shows--fa2ac-sition-within-the-full-list-chromium/error-context.md little-moments-e2e> little-moments-e2e> attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-shows--fa2ac-sition-within-the-full-list-chromium/trace.zip little-moments-e2e> Usage: little-moments-e2e> little-moments-e2e> npx playwright show-trace e2e-results/browse-Browse-media-shows--fa2ac-sition-within-the-full-list-chromium/trace.zip little-moments-e2e> little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> 9) [chromium] › e2e/browse.spec.ts:229:7 › Browse media › opens the last entry from the browse page and shows the oldest media little-moments-e2e> little-moments-e2e> Test timeout of 5000ms exceeded. little-moments-e2e> little-moments-e2e> Error: locator.click: Test timeout of 5000ms exceeded. little-moments-e2e> Call log: little-moments-e2e> - waiting for getByRole('main').getByRole('link').nth(4) little-moments-e2e> little-moments-e2e> little-moments-e2e> 232 | const mediaLinks = page.getByRole("main").getByRole("link"); little-moments-e2e> 233 | little-moments-e2e> > 234 | await mediaLinks.nth(4).click(); little-moments-e2e> | ^ little-moments-e2e> 235 | little-moments-e2e> 236 | const content = page.getByRole("main"); little-moments-e2e> 237 | little-moments-e2e> at /build/source/e2e/browse.spec.ts:234:29 little-moments-e2e> little-moments-e2e> attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-opens--bb8a3--and-shows-the-oldest-media-chromium/video.webm little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> Error Context: e2e-results/browse-Browse-media-opens--bb8a3--and-shows-the-oldest-media-chromium/error-context.md little-moments-e2e> little-moments-e2e> attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── little-moments-e2e> e2e-results/browse-Browse-media-opens--bb8a3--and-shows-the-oldest-media-chromium/trace.zip little-moments-e2e> Usage: little-moments-e2e> little-moments-e2e> npx playwright show-trace e2e-results/browse-Browse-media-opens--bb8a3--and-shows-the-oldest-media-chromium/trace.zip little-moments-e2e> little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> 10) [chromium] › e2e/media.spec.ts:6:7 › View media › shows reaction with a tooltip of the exact date little-moments-e2e> little-moments-e2e> Test timeout of 5000ms exceeded. little-moments-e2e> little-moments-e2e> Error: expect(locator).toHaveCount(expected) failed little-moments-e2e> little-moments-e2e> Locator: getByRole('main').getByRole('link') little-moments-e2e> Expected: 5 little-moments-e2e> Received: 0 little-moments-e2e> little-moments-e2e> Call log: little-moments-e2e> - Expect "toHaveCount" with timeout 5000ms little-moments-e2e> - waiting for getByRole('main').getByRole('link') little-moments-e2e> 9 × locator resolved to 0 elements little-moments-e2e> - unexpected value "0" little-moments-e2e> little-moments-e2e> little-moments-e2e> 9 | // Navigate to the entry that has a reaction (test photo #2). little-moments-e2e> 10 | const mediaLinks = page.getByRole("main").getByRole("link"); little-moments-e2e> > 11 | await expect(mediaLinks).toHaveCount(5); little-moments-e2e> | ^ little-moments-e2e> 12 | // Entry order is newest-first: animated photo, video #2, video #1, photo #2, photo #1. little-moments-e2e> 13 | await mediaLinks.nth(3).click(); little-moments-e2e> 14 | await expect(page.getByRole("main")).toContainText("test photo #2"); little-moments-e2e> at /build/source/e2e/media.spec.ts:11:30 little-moments-e2e> little-moments-e2e> attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── little-moments-e2e> e2e-results/media-View-media-shows-rea-844de-a-tooltip-of-the-exact-date-chromium/video.webm little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> Error Context: e2e-results/media-View-media-shows-rea-844de-a-tooltip-of-the-exact-date-chromium/error-context.md little-moments-e2e> little-moments-e2e> attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── little-moments-e2e> e2e-results/media-View-media-shows-rea-844de-a-tooltip-of-the-exact-date-chromium/trace.zip little-moments-e2e> Usage: little-moments-e2e> little-moments-e2e> npx playwright show-trace e2e-results/media-View-media-shows-rea-844de-a-tooltip-of-the-exact-date-chromium/trace.zip little-moments-e2e> little-moments-e2e> ──────────────────────────────────────────────────────────────────────────────────────────────── little-moments-e2e> little-moments-e2e> 10 failed little-moments-e2e> [chromium] › e2e/browse.spec.ts:66:7 › Browse media › shows the imported media entries on the browse page little-moments-e2e> [chromium] › e2e/browse.spec.ts:79:7 › Browse media › shows media thumbnails from newest to oldest little-moments-e2e> [chromium] › e2e/browse.spec.ts:90:7 › Browse media › shows a video indicator on video thumbnails only little-moments-e2e> [chromium] › e2e/browse.spec.ts:111:7 › Browse media › opens the first entry from the browse page and shows its details little-moments-e2e> [chromium] › e2e/browse.spec.ts:133:7 › Browse media › moves through adjacent entries with Previous and Next links little-moments-e2e> [chromium] › e2e/browse.spec.ts:164:7 › Browse media › moves through adjacent entries with left and right arrow keys little-moments-e2e> [chromium] › e2e/browse.spec.ts:185:7 › Browse media › moves through adjacent entries with swipe gestures on mobile little-moments-e2e> [chromium] › e2e/browse.spec.ts:212:7 › Browse media › shows the current media position within the full list little-moments-e2e> [chromium] › e2e/browse.spec.ts:229:7 › Browse media › opens the last entry from the browse page and shows the oldest media little-moments-e2e> [chromium] › e2e/media.spec.ts:6:7 › View media › shows reaction with a tooltip of the exact date error: Cannot build '/nix/store/xypcwg7vgxyj7ydmp446n5q7wmpa33ci-little-moments-e2e-0.0.1.drv'. Reason: builder failed with exit code 1. Output paths: /nix/store/cvis4m83ms1i0gic19y0fidyv41m91br-little-moments-e2e-0.0.1 Last 547 log lines: > Running phase: unpackPhase > unpacking source archive /nix/store/lg54qr1v2ivj89w2p7vvn0hx8f2xpca9-source > source root is source > Running phase: patchPhase > Executing npmConfigHook > Configuring npm > Validating consistency between /build/source/package-lock.json and /nix/store/s010d1fi38rq6sq05s7jvvqri9dwn7ci-little-moments-e2e-0.0.1-npm-deps/package-lock.json > Setting npm_config_cache to /nix/store/s010d1fi38rq6sq05s7jvvqri9dwn7ci-little-moments-e2e-0.0.1-npm-deps > Installing dependencies > npm warn Unknown env config "nodedir". This will stop working in the next major version of npm. > npm warn Unknown env config "platform". This will stop working in the next major version of npm. > npm warn Unknown env config "arch". This will stop working in the next major version of npm. > > added 100 packages, and audited 101 packages in 764ms > > 25 packages are looking for funding > run `npm fund` for details > > found 0 vulnerabilities > patching script interpreter paths in node_modules > node_modules/@playwright/test/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" > node_modules/acorn/bin/acorn: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" > node_modules/playwright/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" > node_modules/prettier/bin/prettier.cjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" > node_modules/ulid/bin/cli.js: interpreter directive changed from "#! /usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" > node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" > node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" > node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" > node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" > node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" > node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" > node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" > node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" > node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" > node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash" > node_modules/playwright-core/lib/utilsBundleImpl/xdg-open: interpreter directive changed from "#!/bin/sh" to "/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/sh" > node_modules/playwright-core/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" > node_modules/js-yaml/bin/js-yaml.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" > node_modules/which/bin/node-which: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" > node_modules/eslint/bin/eslint.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lgggxsrdzisnbligi7irlh4qmqczs0xk-nodejs-24.11.1/bin/node" > npm warn Unknown env config "nodedir". This will stop working in the next major version of npm. > npm warn Unknown env config "platform". This will stop working in the next major version of npm. > npm warn Unknown env config "arch". This will stop working in the next major version of npm. > rebuilt dependencies successfully > patching script interpreter paths in node_modules > Finished npmConfigHook > Running phase: updateAutotoolsGnuConfigScriptsPhase > Running phase: configurePhase > no configure script, doing nothing > Running phase: buildPhase > no Makefile or custom buildPhase, doing nothing > Running phase: checkPhase > npm warn Unknown env config "nodedir". This will stop working in the next major version of npm. > npm warn Unknown env config "platform". This will stop working in the next major version of npm. > npm warn Unknown env config "arch". This will stop working in the next major version of npm. > [WebServer] 2026/04/11 15:02:55 codeberg.org/mtlynch/little-moments/cmd/app/main.go:19: starting little-moments server > [WebServer] 2026/04/11 15:02:55 codeberg.org/mtlynch/little-moments/store/sqlite/sqlite.go:18: reading DB from testdata/store.db > [WebServer] 2026/04/11 15:02:56 codeberg.org/mtlynch/little-moments/handlers/csp.go:43: CSP media origin: "" > [WebServer] 2026/04/11 15:02:56 codeberg.org/mtlynch/little-moments/cmd/app/main.go:72: listening on http://localhost:6001 > [WebServer] 2026/04/11 15:02:56 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: POST /api/debug/db/per-session 404 19 > > Running 10 tests using 1 worker > Skipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. > [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3292 > [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 > [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 > [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 > [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 > [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 > [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 > [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 > [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 > [WebServer] 2026/04/11 15:02:57 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 > TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. > [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 > [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 > [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 > [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 > [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 > [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 > [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 > [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 > [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 > [WebServer] 2026/04/11 15:03:03 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 > TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. > [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 > [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 > [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 > [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 > [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 > [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 > [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 > [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 > [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 > [WebServer] 2026/04/11 15:03:10 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 > TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. > [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 > [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 > [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 > [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 > [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 > [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 > [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 > [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 > [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 > [WebServer] 2026/04/11 15:03:16 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 > TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. > [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 > [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 > [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 > [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 > [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 > [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 > [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 > [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 > [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 > [WebServer] 2026/04/11 15:03:22 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 > TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. > [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3292 > [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 > [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 > [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 > [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 > [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 > [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 > [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 > [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 > [WebServer] 2026/04/11 15:03:29 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 > TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3292 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 > [WebServer] 2026/04/11 15:03:35 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 > TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. > [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 > [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 > [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 > [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 > [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 > [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 > [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 > [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 > [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 > [WebServer] 2026/04/11 15:03:41 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 > TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. > [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3292 > [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 > [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 > [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 > [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 > [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 > [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 > [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 > [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 > [WebServer] 2026/04/11 15:03:48 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 > TSkipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set. > [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET / 200 3288 > [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/css/bootstrap.min.css 200 194901 > [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/css/style.css 200 25 > [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/bootstrap@5.2.2/js/bootstrap.bundle.min.js 200 80496 > [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx@2.0.4/htmx.min.js 200 50917 > [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/htmx-ext-response-targets@2.0.0/response-targets.js 200 3722 > [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-ext/clear-before-send.js 200 775 > [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/third-party/lucide@1.6.0/lucide.min.js 200 397128 > [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/lucide.js 200 478 > [WebServer] 2026/04/11 15:03:54 codeberg.org/mtlynch/little-moments/handlers/middleware.go:13: GET /static/js/htmx-settings.js 200 813 > T > > 1) [chromium] › e2e/browse.spec.ts:66:7 › Browse media › shows the imported media entries on the browse page > > Test timeout of 5000ms exceeded. > > Error: expect(locator).toHaveCount(expected) failed > > Locator: getByRole('main').getByRole('link') > Expected: 5 > Received: 0 > > Call log: > - Expect "toHaveCount" with timeout 5000ms > - waiting for getByRole('main').getByRole('link') > 9 × locator resolved to 0 elements > - unexpected value "0" > > > 69 | const mediaLinks = page.getByRole("main").getByRole("link"); > 70 | > > 71 | await expect(mediaLinks).toHaveCount(5); > | ^ > 72 | await expect(mediaLinks.nth(0)).toBeVisible(); > 73 | await expect(mediaLinks.nth(1)).toBeVisible(); > 74 | await expect(mediaLinks.nth(2)).toBeVisible(); > at /build/source/e2e/browse.spec.ts:71:30 > > attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-shows--02a6e--entries-on-the-browse-page-chromium/video.webm > ──────────────────────────────────────────────────────────────────────────────────────────────── > > Error Context: e2e-results/browse-Browse-media-shows--02a6e--entries-on-the-browse-page-chromium/error-context.md > > attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-shows--02a6e--entries-on-the-browse-page-chromium/trace.zip > Usage: > > npx playwright show-trace e2e-results/browse-Browse-media-shows--02a6e--entries-on-the-browse-page-chromium/trace.zip > > ──────────────────────────────────────────────────────────────────────────────────────────────── > > 2) [chromium] › e2e/browse.spec.ts:79:7 › Browse media › shows media thumbnails from newest to oldest > > Test timeout of 5000ms exceeded. > > Error: expect(locator).toHaveCount(expected) failed > > Locator: getByRole('main').getByRole('link') > Expected: 5 > Received: 0 > > Call log: > - Expect "toHaveCount" with timeout 5000ms > - waiting for getByRole('main').getByRole('link') > 9 × locator resolved to 0 elements > - unexpected value "0" > > > 80 | const mediaLinks = page.getByRole("main").getByRole("link"); > 81 | > > 82 | await expect(mediaLinks).toHaveCount(5); > | ^ > 83 | await expect(mediaLinks.nth(0)).toHaveAttribute("href", "/m/1000"); > 84 | await expect(mediaLinks.nth(1)).toHaveAttribute("href", "/m/1001"); > 85 | await expect(mediaLinks.nth(2)).toHaveAttribute("href", "/m/1002"); > at /build/source/e2e/browse.spec.ts:82:30 > > attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-shows--19f8f-nails-from-newest-to-oldest-chromium/video.webm > ──────────────────────────────────────────────────────────────────────────────────────────────── > > Error Context: e2e-results/browse-Browse-media-shows--19f8f-nails-from-newest-to-oldest-chromium/error-context.md > > attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-shows--19f8f-nails-from-newest-to-oldest-chromium/trace.zip > Usage: > > npx playwright show-trace e2e-results/browse-Browse-media-shows--19f8f-nails-from-newest-to-oldest-chromium/trace.zip > > ──────────────────────────────────────────────────────────────────────────────────────────────── > > 3) [chromium] › e2e/browse.spec.ts:90:7 › Browse media › shows a video indicator on video thumbnails only > > Test timeout of 5000ms exceeded. > > Error: expect(locator).toHaveCount(expected) failed > > Locator: getByRole('main').getByRole('link') > Expected: 5 > Received: 0 > > Call log: > - Expect "toHaveCount" with timeout 5000ms > - waiting for getByRole('main').getByRole('link') > 9 × locator resolved to 0 elements > - unexpected value "0" > > > 91 | const mediaLinks = page.getByRole("main").getByRole("link"); > 92 | > > 93 | await expect(mediaLinks).toHaveCount(5); > | ^ > 94 | await expect( > 95 | mediaLinks.nth(0).getByTestId("video-thumbnail-indicator"), > 96 | ).toHaveCount(0); > at /build/source/e2e/browse.spec.ts:93:30 > > attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-shows--c7537-or-on-video-thumbnails-only-chromium/video.webm > ──────────────────────────────────────────────────────────────────────────────────────────────── > > Error Context: e2e-results/browse-Browse-media-shows--c7537-or-on-video-thumbnails-only-chromium/error-context.md > > attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-shows--c7537-or-on-video-thumbnails-only-chromium/trace.zip > Usage: > > npx playwright show-trace e2e-results/browse-Browse-media-shows--c7537-or-on-video-thumbnails-only-chromium/trace.zip > > ──────────────────────────────────────────────────────────────────────────────────────────────── > > 4) [chromium] › e2e/browse.spec.ts:111:7 › Browse media › opens the first entry from the browse page and shows its details > > Test timeout of 5000ms exceeded. > > Error: locator.click: Test timeout of 5000ms exceeded. > Call log: > - waiting for getByRole('main').getByRole('link').first() > > > 114 | const mediaLinks = page.getByRole("main").getByRole("link"); > 115 | > > 116 | await mediaLinks.nth(0).click(); > | ^ > 117 | > 118 | const content = page.getByRole("main"); > 119 | > at /build/source/e2e/browse.spec.ts:116:29 > > attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-opens--542e7--page-and-shows-its-details-chromium/video.webm > ──────────────────────────────────────────────────────────────────────────────────────────────── > > Error Context: e2e-results/browse-Browse-media-opens--542e7--page-and-shows-its-details-chromium/error-context.md > > attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-opens--542e7--page-and-shows-its-details-chromium/trace.zip > Usage: > > npx playwright show-trace e2e-results/browse-Browse-media-opens--542e7--page-and-shows-its-details-chromium/trace.zip > > ──────────────────────────────────────────────────────────────────────────────────────────────── > > 5) [chromium] › e2e/browse.spec.ts:133:7 › Browse media › moves through adjacent entries with Previous and Next links > > Test timeout of 5000ms exceeded. > > Error: locator.click: Test timeout of 5000ms exceeded. > Call log: > - waiting for getByRole('main').getByRole('link').nth(1) > > > 136 | const mediaLinks = page.getByRole("main").getByRole("link"); > 137 | > > 138 | await mediaLinks.nth(1).click(); > | ^ > 139 | await page.getByRole("main").getByRole("link", { name: "Next" }).click(); > 140 | > 141 | const content = page.getByRole("main"); > at /build/source/e2e/browse.spec.ts:138:29 > > attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-moves--c86ee-ith-Previous-and-Next-links-chromium/video.webm > ──────────────────────────────────────────────────────────────────────────────────────────────── > > Error Context: e2e-results/browse-Browse-media-moves--c86ee-ith-Previous-and-Next-links-chromium/error-context.md > > attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-moves--c86ee-ith-Previous-and-Next-links-chromium/trace.zip > Usage: > > npx playwright show-trace e2e-results/browse-Browse-media-moves--c86ee-ith-Previous-and-Next-links-chromium/trace.zip > > ──────────────────────────────────────────────────────────────────────────────────────────────── > > 6) [chromium] › e2e/browse.spec.ts:164:7 › Browse media › moves through adjacent entries with left and right arrow keys > > Test timeout of 5000ms exceeded. > > Error: locator.click: Test timeout of 5000ms exceeded. > Call log: > - waiting for getByRole('main').getByRole('link').nth(2) > > > 167 | const mediaLinks = page.getByRole("main").getByRole("link"); > 168 | > > 169 | await mediaLinks.nth(2).click(); > | ^ > 170 | > 171 | await expect(page).toHaveURL("/m/1002"); > 172 | await expect(page.getByRole("main")).toContainText("test video #1"); > at /build/source/e2e/browse.spec.ts:169:29 > > attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-moves--d7942-h-left-and-right-arrow-keys-chromium/video.webm > ──────────────────────────────────────────────────────────────────────────────────────────────── > > Error Context: e2e-results/browse-Browse-media-moves--d7942-h-left-and-right-arrow-keys-chromium/error-context.md > > attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-moves--d7942-h-left-and-right-arrow-keys-chromium/trace.zip > Usage: > > npx playwright show-trace e2e-results/browse-Browse-media-moves--d7942-h-left-and-right-arrow-keys-chromium/trace.zip > > ──────────────────────────────────────────────────────────────────────────────────────────────── > > 7) [chromium] › e2e/browse.spec.ts:185:7 › Browse media › moves through adjacent entries with swipe gestures on mobile > > Test timeout of 5000ms exceeded. > > Error: locator.click: Test ended. > Call log: > - waiting for getByRole('main').getByRole('link').nth(2) > > > 193 | > 194 | await mobilePage.goto("/"); > > 195 | await mobilePage.getByRole("main").getByRole("link").nth(2).click(); > | ^ > 196 | await expect(mobilePage).toHaveURL("/m/1002"); > 197 | await expect(mobilePage.getByRole("main")).toContainText("test video #1"); > 198 | > at /build/source/e2e/browse.spec.ts:195:65 > > attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-moves--23055-th-swipe-gestures-on-mobile-chromium/video.webm > ──────────────────────────────────────────────────────────────────────────────────────────────── > > Error Context: e2e-results/browse-Browse-media-moves--23055-th-swipe-gestures-on-mobile-chromium/error-context.md > > attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-moves--23055-th-swipe-gestures-on-mobile-chromium/trace.zip > Usage: > > npx playwright show-trace e2e-results/browse-Browse-media-moves--23055-th-swipe-gestures-on-mobile-chromium/trace.zip > > ──────────────────────────────────────────────────────────────────────────────────────────────── > > 8) [chromium] › e2e/browse.spec.ts:212:7 › Browse media › shows the current media position within the full list > > Test timeout of 5000ms exceeded. > > Error: locator.click: Test timeout of 5000ms exceeded. > Call log: > - waiting for getByRole('main').getByRole('link').first() > > > 215 | let mediaLinks = page.getByRole("main").getByRole("link"); > 216 | > > 217 | await mediaLinks.nth(0).click(); > | ^ > 218 | await expect(page.getByRole("main")).toContainText("1 of 5"); > 219 | > 220 | await page.getByRole("main").getByRole("link", { name: "Next" }).click(); > at /build/source/e2e/browse.spec.ts:217:29 > > attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-shows--fa2ac-sition-within-the-full-list-chromium/video.webm > ──────────────────────────────────────────────────────────────────────────────────────────────── > > Error Context: e2e-results/browse-Browse-media-shows--fa2ac-sition-within-the-full-list-chromium/error-context.md > > attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-shows--fa2ac-sition-within-the-full-list-chromium/trace.zip > Usage: > > npx playwright show-trace e2e-results/browse-Browse-media-shows--fa2ac-sition-within-the-full-list-chromium/trace.zip > > ──────────────────────────────────────────────────────────────────────────────────────────────── > > 9) [chromium] › e2e/browse.spec.ts:229:7 › Browse media › opens the last entry from the browse page and shows the oldest media > > Test timeout of 5000ms exceeded. > > Error: locator.click: Test timeout of 5000ms exceeded. > Call log: > - waiting for getByRole('main').getByRole('link').nth(4) > > > 232 | const mediaLinks = page.getByRole("main").getByRole("link"); > 233 | > > 234 | await mediaLinks.nth(4).click(); > | ^ > 235 | > 236 | const content = page.getByRole("main"); > 237 | > at /build/source/e2e/browse.spec.ts:234:29 > > attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-opens--bb8a3--and-shows-the-oldest-media-chromium/video.webm > ──────────────────────────────────────────────────────────────────────────────────────────────── > > Error Context: e2e-results/browse-Browse-media-opens--bb8a3--and-shows-the-oldest-media-chromium/error-context.md > > attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── > e2e-results/browse-Browse-media-opens--bb8a3--and-shows-the-oldest-media-chromium/trace.zip > Usage: > > npx playwright show-trace e2e-results/browse-Browse-media-opens--bb8a3--and-shows-the-oldest-media-chromium/trace.zip > > ──────────────────────────────────────────────────────────────────────────────────────────────── > > 10) [chromium] › e2e/media.spec.ts:6:7 › View media › shows reaction with a tooltip of the exact date > > Test timeout of 5000ms exceeded. > > Error: expect(locator).toHaveCount(expected) failed > > Locator: getByRole('main').getByRole('link') > Expected: 5 > Received: 0 > > Call log: > - Expect "toHaveCount" with timeout 5000ms > - waiting for getByRole('main').getByRole('link') > 9 × locator resolved to 0 elements > - unexpected value "0" > > > 9 | // Navigate to the entry that has a reaction (test photo #2). > 10 | const mediaLinks = page.getByRole("main").getByRole("link"); > > 11 | await expect(mediaLinks).toHaveCount(5); > | ^ > 12 | // Entry order is newest-first: animated photo, video #2, video #1, photo #2, photo #1. > 13 | await mediaLinks.nth(3).click(); > 14 | await expect(page.getByRole("main")).toContainText("test photo #2"); > at /build/source/e2e/media.spec.ts:11:30 > > attachment #1: video (video/webm) ────────────────────────────────────────────────────────────── > e2e-results/media-View-media-shows-rea-844de-a-tooltip-of-the-exact-date-chromium/video.webm > ──────────────────────────────────────────────────────────────────────────────────────────────── > > Error Context: e2e-results/media-View-media-shows-rea-844de-a-tooltip-of-the-exact-date-chromium/error-context.md > > attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── > e2e-results/media-View-media-shows-rea-844de-a-tooltip-of-the-exact-date-chromium/trace.zip > Usage: > > npx playwright show-trace e2e-results/media-View-media-shows-rea-844de-a-tooltip-of-the-exact-date-chromium/trace.zip > > ──────────────────────────────────────────────────────────────────────────────────────────────── > > 10 failed > [chromium] › e2e/browse.spec.ts:66:7 › Browse media › shows the imported media entries on the browse page > [chromium] › e2e/browse.spec.ts:79:7 › Browse media › shows media thumbnails from newest to oldest > [chromium] › e2e/browse.spec.ts:90:7 › Browse media › shows a video indicator on video thumbnails only > [chromium] › e2e/browse.spec.ts:111:7 › Browse media › opens the first entry from the browse page and shows its details > [chromium] › e2e/browse.spec.ts:133:7 › Browse media › moves through adjacent entries with Previous and Next links > [chromium] › e2e/browse.spec.ts:164:7 › Browse media › moves through adjacent entries with left and right arrow keys > [chromium] › e2e/browse.spec.ts:185:7 › Browse media › moves through adjacent entries with swipe gestures on mobile > [chromium] › e2e/browse.spec.ts:212:7 › Browse media › shows the current media position within the full list > [chromium] › e2e/browse.spec.ts:229:7 › Browse media › opens the last entry from the browse page and shows the oldest media > [chromium] › e2e/media.spec.ts:6:7 › View media › shows reaction with a tooltip of the exact date For full logs, run: nix log /nix/store/xypcwg7vgxyj7ydmp446n5q7wmpa33ci-little-moments-e2e-0.0.1.drv