Files
extension/e2e/fixtures/extension.fixture.ts

49 lines
1.6 KiB
TypeScript

import { type BrowserContext, test as base } from '@playwright/test'
import { createExtensionContext } from './extension-context'
import { waitForExtensionLoad } from '../utils/wait-for-extension'
interface ExtensionFixtures {
context: BrowserContext
extensionId: string
}
/**
* Chrome extension test fixture
*/
export const chromeExtensionTest = base.extend<ExtensionFixtures>({
// biome-ignore lint/correctness/noEmptyPattern: fixture file
context: async ({}, use) => {
const context = await createExtensionContext({ browser: 'chrome' })
await use(context)
await context.close()
},
extensionId: async ({ context }, use) => {
const { extensionId } = await waitForExtensionLoad(context, { timeout: 30000 })
await use(extensionId)
},
})
/**
* Firefox extension test fixture
* Note: Firefox extension loading in Playwright is limited
*/
export const firefoxExtensionTest = base.extend<ExtensionFixtures>({
// biome-ignore lint/correctness/noEmptyPattern: fixture file
context: async ({}, use) => {
const context = await createExtensionContext({ browser: 'firefox' })
await use(context)
await context.close()
},
extensionId: async ({ context }, use) => {
// Firefox doesn't expose extension ID the same way
// We'll need to use a different detection method
await use('firefox-extension')
},
})
// Default to Chrome for backward compatibility
export const freshExtensionTest = chromeExtensionTest
// Re-export the programmatic onboarded extension test fixture
export { onboardedExtensionTest } from './onboarded-extension.fixture'