Files
diff-viewer-extension/tests/fixtures.ts
dependabot[bot] cc67811591 Bump vitest from 0.34.3 to 0.34.6 (#532)
* 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>
2024-01-19 06:32:54 -05:00

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