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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ npm ci
npm test
```

The tests start their own Python HTTP server on port 8897 and use installed Chrome by default. To use bundled Chromium instead:
The tests start their own Python HTTP server on port 8897 (set `TEST_PORT` to change it) and use installed Chrome by default. To use bundled Chromium instead:

```sh
npx playwright install chromium
Expand Down
9 changes: 7 additions & 2 deletions tests/browser.test.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,16 @@ const {chromium} = require('playwright');
const {spawn} = require('node:child_process');
const fs = require('node:fs');
let browser, server;
const base = 'http://127.0.0.1:8897/';
const port = process.env.TEST_PORT || '8897';
const base = `http://127.0.0.1:${port}/`;
before(async()=>{
server=spawn(process.env.PYTHON || 'python3',['-m','http.server','8897','--bind','127.0.0.1'],{stdio:'ignore'});
server=spawn(process.env.PYTHON || 'python3',['-m','http.server',port,'--bind','127.0.0.1'],{stdio:'ignore'});
Comment thread
LukasWallrich marked this conversation as resolved.
// A server that exits early usually means the port is taken; fail rather than test another server's files.
let exited=false;server.on('exit',()=>{exited=true;});
// Consume the readiness response so its open stream does not outlive the hook.
for(let i=0;i<50;i++){try{await (await fetch(base)).arrayBuffer();break;}catch{await new Promise(r=>setTimeout(r,100));}}
await new Promise(r=>setTimeout(r,200));
if(exited) throw new Error(`Test server could not start on port ${port}; set TEST_PORT to a free port.`);
browser=await chromium.launch({channel:process.env.BROWSER_CHANNEL || 'chrome',headless:true});
});
after(async()=>{await browser?.close();server?.kill();});
Expand Down
Loading