Skip to content

Commit 040ba97

Browse files
committed
test: copy playground per worker
1 parent a22fb3e commit 040ba97

File tree

4 files changed

+58
-24
lines changed

4 files changed

+58
-24
lines changed

e2e/hmr/.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
playground-tmp
1+
playground-tmp-*

e2e/hmr/fixtures/vite-server.ts

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,32 @@ type ViteFixtures = {
99
devServer: ViteDevServer
1010
baseURL: string
1111
projectRoot: string
12-
}
13-
14-
export function applyEditFile(
15-
sourceFilePath: string,
16-
newContentFilePath: string
17-
) {
18-
fs.writeFileSync(
19-
path.join(projectRoot, sourceFilePath),
20-
fs.readFileSync(path.join(projectRoot, newContentFilePath), 'utf8'),
21-
'utf8'
22-
)
12+
applyEditFile: (sourceFilePath: string, newContentFilePath: string) => void
2313
}
2414

2515
const sourceDir = fileURLToPath(new URL('../playground', import.meta.url))
26-
const fixtureDir = fileURLToPath(new URL('../playground-tmp', import.meta.url))
27-
const projectRoot = path.resolve(fixtureDir)
2816

2917
export const test = base.extend<ViteFixtures>({
30-
projectRoot,
18+
// @ts-expect-error: we need to compute projectRoot per worker
19+
projectRoot: [
20+
async ({}, use, testInfo) => {
21+
const fixtureDir = fileURLToPath(
22+
new URL(
23+
`../playground-tmp-worker-${testInfo.workerIndex}`,
24+
import.meta.url
25+
)
26+
)
27+
const projectRoot = path.resolve(fixtureDir)
28+
await use(projectRoot)
29+
},
30+
{ scope: 'worker' },
31+
],
3132

3233
// @ts-expect-error: type matched what is passed to use(server)
3334
devServer: [
34-
async ({}, use) => {
35+
async ({ projectRoot }, use) => {
36+
const fixtureDir = projectRoot
37+
3538
fs.rmSync(fixtureDir, { force: true, recursive: true })
3639
fs.cpSync(sourceDir, fixtureDir, {
3740
recursive: true,
@@ -73,6 +76,19 @@ export const test = base.extend<ViteFixtures>({
7376
const addr = http.address() as AddressInfo
7477
await use(`http://127.0.0.1:${addr.port}`)
7578
},
79+
80+
applyEditFile: async ({ projectRoot }, use) => {
81+
await use(function applyEdit(
82+
sourceFilePath: string,
83+
newContentFilePath: string
84+
) {
85+
fs.writeFileSync(
86+
path.join(projectRoot, sourceFilePath),
87+
fs.readFileSync(path.join(projectRoot, newContentFilePath), 'utf8'),
88+
'utf8'
89+
)
90+
})
91+
},
7692
})
7793

7894
export { expect }

e2e/hmr/hmr.spec.ts

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Page } from '@playwright/test'
2-
import { test, expect, applyEditFile } from './fixtures/vite-server'
2+
import { test, expect } from './fixtures/vite-server'
33

44
test.describe('Pages HMR', () => {
55
let hmrToken: number = -1
@@ -24,7 +24,11 @@ test.describe('Pages HMR', () => {
2424
.toBe(hmrToken)
2525
})
2626

27-
test('applies meta changes in <route> block', async ({ page, baseURL }) => {
27+
test('applies meta changes in <route> block', async ({
28+
page,
29+
baseURL,
30+
applyEditFile,
31+
}) => {
2832
await page.goto(baseURL + '/')
2933

3034
await expect(page.locator('[data-testid="meta-hello"]')).toHaveText('')
@@ -38,7 +42,11 @@ test.describe('Pages HMR', () => {
3842
await expect(page.locator('[data-testid="meta-hello"]')).toHaveText('world')
3943
})
4044

41-
test('applies name changes via definePage', async ({ page, baseURL }) => {
45+
test('applies name changes via definePage', async ({
46+
page,
47+
baseURL,
48+
applyEditFile,
49+
}) => {
4250
await page.goto(baseURL + '/hmr-name')
4351

4452
await expect(page.locator('[data-testid="route-name"]')).toHaveText(
@@ -59,6 +67,7 @@ test.describe('Pages HMR', () => {
5967
test.skip('applies path changes via definePage', async ({
6068
page,
6169
baseURL,
70+
applyEditFile,
6271
}) => {
6372
await page.goto(baseURL + '/hmr-path')
6473

@@ -83,6 +92,7 @@ test.describe('Pages HMR', () => {
8392
test.skip('applies params parsers via definePage', async ({
8493
page,
8594
baseURL,
95+
applyEditFile,
8696
}) => {
8797
await page.goto(baseURL + '/hmr-params-123')
8898

@@ -108,6 +118,7 @@ test.describe('Pages HMR', () => {
108118
test.skip('applies meta changes via definePage', async ({
109119
page,
110120
baseURL,
121+
applyEditFile,
111122
}) => {
112123
await page.goto(baseURL + '/hmr-meta')
113124

@@ -122,7 +133,11 @@ test.describe('Pages HMR', () => {
122133
await expect(page.locator('[data-testid="meta-hello"]')).toHaveText('world')
123134
})
124135

125-
test.skip('applies alias via definePage', async ({ page, baseURL }) => {
136+
test.skip('applies alias via definePage', async ({
137+
page,
138+
baseURL,
139+
applyEditFile,
140+
}) => {
126141
await page.goto(baseURL + '/hmr-alias')
127142

128143
await expect(page.locator('[data-testid="route-path"]')).toHaveText(
@@ -143,7 +158,11 @@ test.describe('Pages HMR', () => {
143158
)
144159
})
145160

146-
test.skip('updates definePage properties', async ({ page, baseURL }) => {
161+
test.skip('updates definePage properties', async ({
162+
page,
163+
baseURL,
164+
applyEditFile,
165+
}) => {
147166
await page.goto(baseURL + '/hmr-update')
148167

149168
await expect(page.locator('[data-testid="meta-foo"]')).toHaveText('bar')

playwright.config.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ export default defineConfig({
77
forbidOnly: !!process.env.CI,
88
// no retries because we have a setup
99
retries: 0,
10-
// FIXME: handle concurrency for temp folders
11-
workers: 1,
12-
// workers: process.env.CI ? 1 : undefined,
10+
// Each worker gets its own isolated temp folder
11+
workers: process.env.CI ? 1 : undefined,
1312
reporter: [
1413
// for console logs
1514
['list'],

0 commit comments

Comments
 (0)