add custom base test fixture

This commit is contained in:
ryanrosello-og
2024-08-11 07:44:40 +10:00
parent e86a5622c8
commit 9a85bd06bd
2 changed files with 50 additions and 2 deletions

View 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

View File

@ -1,9 +1,9 @@
import { test, expect } from '@playwright/test'
import { expect } from '@playwright/test'
import { getUtils, setup, tearDown } from './test-utils'
import { SaveSettingsPayload } from 'lib/settings/settingsTypes'
import { TEST_SETTINGS_KEY, TEST_SETTINGS_CORRUPTED } from './storageStates'
import * as TOML from '@iarna/toml'
import { test } from './lib/base-fixture'
test.beforeEach(async ({ context, page }) => {
await setup(context, page)