-
Notifications
You must be signed in to change notification settings - Fork 112
/
Copy pathutils.ts
38 lines (33 loc) · 1.05 KB
/
utils.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { fileURLToPath } from 'node:url'
import initJiti from 'jiti'
import { defu } from 'defu'
import { join } from 'pathe'
import { NuxtConfig } from '@nuxt/types'
import { chromium, Browser, Page } from 'playwright-chromium'
const jitiImport = initJiti(fileURLToPath(import.meta.url))
export async function createBrowser (): Promise<Browser> {
return await chromium.launch()
}
/**
* @param {string} selector
* @param {Page} page
*/
export async function $$ (selector: string, page: Page): Promise<string | null> {
const element = await page.$(selector)
if (element) {
return await element.textContent()
}
return null
}
export function loadConfig (dir: string, fixture: string | null = null, override: NuxtConfig = {}, { merge = false } = {}): NuxtConfig {
const fixtureConfig = jitiImport(join(dir, 'fixture', fixture ?? '', 'nuxt.config'))
const config = Object.assign({}, fixtureConfig.default || fixtureConfig)
if (merge) {
return defu(override, config)
} else {
return {
...defu(config),
...defu(override),
}
}
}