* Bump vitest from 0.34.3 to 0.34.6 Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 0.34.3 to 0.34.6. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v0.34.6/packages/vitest) --- updated-dependencies: - dependency-name: vitest dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * Move to happy-dom, type:module for vite warning, cleanup jest * Fix __dirname and snapshots * More snap changes --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Pierre Jacquier <pierrejacquier39@gmail.com>
67 lines
2.3 KiB
TypeScript
67 lines
2.3 KiB
TypeScript
// From https://playwright.dev/docs/chrome-extensions#testing
|
|
import {
|
|
test as base,
|
|
chromium,
|
|
Worker,
|
|
type BrowserContext,
|
|
} from '@playwright/test'
|
|
import path, { dirname } from 'path'
|
|
import { fileURLToPath } from 'url';
|
|
import * as dotenv from 'dotenv'
|
|
dotenv.config()
|
|
|
|
export const test = base.extend<{
|
|
context: BrowserContext
|
|
extensionId: string
|
|
background: Worker
|
|
authorizedBackground: Worker
|
|
}>({
|
|
context: async ({}, use) => {
|
|
// Due to change to type: module, https://stackoverflow.com/a/50052194
|
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
const pathToExtension = path.join(__dirname, '..', 'build')
|
|
const context = await chromium.launchPersistentContext('', {
|
|
headless: false,
|
|
args: [
|
|
`--headless=new`, // headless mode that allows for extensions
|
|
`--disable-extensions-except=${pathToExtension}`,
|
|
`--load-extension=${pathToExtension}`,
|
|
],
|
|
})
|
|
await use(context)
|
|
await context.close()
|
|
},
|
|
background: async ({ context }, use) => {
|
|
let [background] = context.serviceWorkers()
|
|
if (!background)
|
|
background = await context.waitForEvent('serviceworker')
|
|
|
|
// Wait for the chrome object to be available
|
|
await new Promise(resolve => setTimeout(resolve, 100))
|
|
await use(background)
|
|
},
|
|
authorizedBackground: async ({ background }, use) => {
|
|
// Load the env tokens in storage for auth
|
|
const githubToken = process.env.GITHUB_TOKEN
|
|
const kittycadToken = process.env.KITTYCAD_TOKEN
|
|
await background.evaluate(
|
|
async ([githubToken, kittycadToken]) => {
|
|
await chrome.storage.local.set({
|
|
ktk: kittycadToken, // from src/chrome/storage.ts
|
|
gtk: githubToken, // from src/chrome/storage.ts
|
|
})
|
|
},
|
|
[githubToken, kittycadToken]
|
|
)
|
|
|
|
// Wait for background auth
|
|
await new Promise(resolve => setTimeout(resolve, 2000))
|
|
await use(background)
|
|
},
|
|
extensionId: async ({ background }, use) => {
|
|
const extensionId = background.url().split('/')[2]
|
|
await use(extensionId)
|
|
},
|
|
})
|
|
export const expect = test.expect
|