add custom base test fixture
This commit is contained in:
48
e2e/playwright/lib/base-fixture.ts
Normal file
48
e2e/playwright/lib/base-fixture.ts
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
import * as fs from 'fs'
|
||||||
|
import * as path from 'path'
|
||||||
|
import * as crypto from 'crypto'
|
||||||
|
import { test as baseTest } from '@playwright/test'
|
||||||
|
|
||||||
|
const istanbulCLIOutput = path.join(process.cwd(), '.nyc_output')
|
||||||
|
|
||||||
|
export function generateUUID(): string {
|
||||||
|
return crypto.randomBytes(16).toString('hex')
|
||||||
|
}
|
||||||
|
|
||||||
|
export const test = baseTest.extend({
|
||||||
|
context: async ({ context }, use) => {
|
||||||
|
await context.addInitScript(() =>
|
||||||
|
window.addEventListener('beforeunload', () =>
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
(window as any).collectIstanbulCoverage(
|
||||||
|
JSON.stringify((window as any).__coverage__)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
await fs.promises.mkdir(istanbulCLIOutput, { recursive: true })
|
||||||
|
await context.exposeFunction(
|
||||||
|
'collectIstanbulCoverage',
|
||||||
|
(coverageJSON: string) => {
|
||||||
|
if (coverageJSON)
|
||||||
|
fs.writeFileSync(
|
||||||
|
path.join(
|
||||||
|
istanbulCLIOutput,
|
||||||
|
`playwright_coverage_${generateUUID()}.json`
|
||||||
|
),
|
||||||
|
coverageJSON
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
await use(context)
|
||||||
|
for (const page of context.pages()) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
await page.evaluate(() =>
|
||||||
|
(window as any).collectIstanbulCoverage(
|
||||||
|
JSON.stringify((window as any).__coverage__)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
export const expect = test.expect
|
@ -1,9 +1,9 @@
|
|||||||
import { test, expect } from '@playwright/test'
|
import { expect } from '@playwright/test'
|
||||||
|
|
||||||
import { getUtils, setup, tearDown } from './test-utils'
|
import { getUtils, setup, tearDown } from './test-utils'
|
||||||
import { SaveSettingsPayload } from 'lib/settings/settingsTypes'
|
import { SaveSettingsPayload } from 'lib/settings/settingsTypes'
|
||||||
import { TEST_SETTINGS_KEY, TEST_SETTINGS_CORRUPTED } from './storageStates'
|
import { TEST_SETTINGS_KEY, TEST_SETTINGS_CORRUPTED } from './storageStates'
|
||||||
import * as TOML from '@iarna/toml'
|
import * as TOML from '@iarna/toml'
|
||||||
|
import { test } from './lib/base-fixture'
|
||||||
|
|
||||||
test.beforeEach(async ({ context, page }) => {
|
test.beforeEach(async ({ context, page }) => {
|
||||||
await setup(context, page)
|
await setup(context, page)
|
||||||
|
Reference in New Issue
Block a user