mirror of
https://github.com/zhigang1992/wallet.git
synced 2026-01-12 22:53:27 +08:00
64 lines
2.1 KiB
TypeScript
64 lines
2.1 KiB
TypeScript
import { BrowserContext, test as base, chromium } from '@playwright/test';
|
|
import { GlobalPage } from '@tests/page-object-models/global.page';
|
|
import { HomePage } from '@tests/page-object-models/home.page';
|
|
import { OnboardingPage } from '@tests/page-object-models/onboarding.page';
|
|
import { SendPage } from '@tests/page-object-models/send.page';
|
|
import { SwapPage } from '@tests/page-object-models/swap.page';
|
|
import path from 'path';
|
|
|
|
interface TestFixtures {
|
|
context: BrowserContext;
|
|
extensionId: string;
|
|
globalPage: GlobalPage;
|
|
homePage: HomePage;
|
|
onboardingPage: OnboardingPage;
|
|
sendPage: SendPage;
|
|
swapPage: SwapPage;
|
|
}
|
|
|
|
/**
|
|
* Loads the extension into the browser context. Use this test function with
|
|
* Playwright to avoid having to manually load the extension into the browser
|
|
* context in each test. Created by following,
|
|
* https://playwright.dev/docs/chrome-extensions
|
|
*/
|
|
export const test = base.extend<TestFixtures>({
|
|
context: async ({}, use) => {
|
|
const pathToExtension = path.join(__dirname, '../../dist');
|
|
const context = await chromium.launchPersistentContext('', {
|
|
headless: false,
|
|
permissions: ['clipboard-read'],
|
|
args: [
|
|
`--disable-extensions-except=${pathToExtension}`,
|
|
`--load-extension=${pathToExtension}`,
|
|
// force GPU hardware acceleration
|
|
// (even in headless mode)
|
|
'--use-gl=egl',
|
|
],
|
|
});
|
|
await use(context);
|
|
await context.close();
|
|
},
|
|
extensionId: async ({ context }, use) => {
|
|
let [background] = context.serviceWorkers();
|
|
if (!background) background = await context.waitForEvent('serviceworker');
|
|
const extensionId = background.url().split('/')[2];
|
|
await use(extensionId);
|
|
},
|
|
globalPage: async ({ page }, use) => {
|
|
await use(new GlobalPage(page));
|
|
},
|
|
homePage: async ({ page }, use) => {
|
|
await use(new HomePage(page));
|
|
},
|
|
onboardingPage: async ({ page }, use) => {
|
|
await use(new OnboardingPage(page));
|
|
},
|
|
sendPage: async ({ page }, use) => {
|
|
await use(new SendPage(page));
|
|
},
|
|
swapPage: async ({ page }, use) => {
|
|
await use(new SwapPage(page));
|
|
},
|
|
});
|