feat: migrate e2e test infrastructure to @playwright/test

Replace direct playwright dependency with @playwright/test and add
playwright.config.js for centralized test configuration. Update run.sh
to invoke 'npx playwright test' instead of running test files with node.
This commit is contained in:
Johan Lundberg 2026-02-18 11:10:23 +01:00
parent a817fdb0f6
commit 174c6c001e
No known key found for this signature in database
GPG key ID: A6C152738D03C7D1
4 changed files with 41 additions and 26 deletions

View file

@ -6,7 +6,22 @@
"": {
"name": "porchlight-e2e",
"dependencies": {
"playwright": "^1.52.0"
"@playwright/test": "^1.52.0"
}
},
"node_modules/@playwright/test": {
"version": "1.58.2",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz",
"integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==",
"license": "Apache-2.0",
"dependencies": {
"playwright": "1.58.2"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
"node": ">=18"
}
},
"node_modules/fsevents": {

View file

@ -3,10 +3,10 @@
"name": "porchlight-e2e",
"description": "End-to-end browser tests for Porchlight",
"scripts": {
"test": "./run.sh",
"test": "npx playwright test",
"setup": "npx playwright install chromium"
},
"dependencies": {
"playwright": "^1.52.0"
"@playwright/test": "^1.52.0"
}
}

View file

@ -0,0 +1,16 @@
// @ts-check
const { defineConfig } = require('@playwright/test');
module.exports = defineConfig({
testDir: '.',
testMatch: '*.spec.js',
timeout: 30_000,
retries: 0,
workers: 1,
reporter: [['list']],
use: {
baseURL: process.env.TARGET_URL || 'http://localhost:8099',
browserName: 'chromium',
headless: process.env.E2E_HEADLESS !== '0',
},
});

View file

@ -61,30 +61,14 @@ export E2E_FIXTURES
echo "Test fixtures: ${E2E_FIXTURES}"
# --- Run tests ---
FAILED=0
if [ $# -gt 0 ]; then
TEST_FILES=("$@")
else
TEST_FILES=("$SCRIPT_DIR"/test_*.js)
fi
for test_file in "${TEST_FILES[@]}"; do
echo ""
echo "=== Running $(basename "$test_file") ==="
if node "$test_file"; then
echo "=== $(basename "$test_file"): OK ==="
else
echo "=== $(basename "$test_file"): FAILED ==="
FAILED=1
fi
done
echo ""
if [ "$FAILED" -eq 0 ]; then
echo "All e2e tests passed."
echo "=== Running Playwright tests ==="
cd "$SCRIPT_DIR"
if [ $# -gt 0 ]; then
npx playwright test "$@"
else
echo "Some e2e tests failed." >&2
npx playwright test
fi
EXIT_CODE=$?
exit "$FAILED"
exit "$EXIT_CODE"