Created
August 10, 2021 05:23
-
-
Save bs1180/3eb4aa5c48e179cc28a5d316dac9aed4 to your computer and use it in GitHub Desktop.
Playwright fixture - start server
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { createServer, Server } from 'http'; | |
import { test as base } from '@playwright/test'; | |
import path from 'path'; | |
import serve from 'serve-handler'; | |
type StaticWorkerFixtures = { | |
port: number; | |
server: Server; | |
}; | |
const test = base.extend<{}, StaticWorkerFixtures>({ | |
port: [ | |
async ({}, use, workerInfo) => { | |
// We need unique port number for each worker that gets started. It will be assigned the port variable. | |
await use(3000 + workerInfo.workerIndex); | |
}, | |
{ scope: 'worker' } | |
], | |
server: [ | |
async ({ port }, use) => { | |
const server: Server = await new Promise(resolve => { | |
const server = createServer((req, res) => { | |
serve(req, res, { public: path.join(__dirname, '../public') }); | |
}); | |
// We start a simple static file server listening on the port from the previous step | |
// @ts-ignore | |
server.listen(port, error => { | |
if (error) throw error; | |
resolve(server); | |
}); | |
}); | |
await use(server); | |
// We cleanup the server when we are finished | |
await new Promise(resolve => server.close(resolve)); | |
}, | |
{ | |
scope: 'worker', | |
auto: true | |
} | |
] | |
}); | |
export default test; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment