80 lines
2.0 KiB
TypeScript
80 lines
2.0 KiB
TypeScript
import * as base from '@playwright/test'
|
|
import { _electron as electron, Page, ElectronApplication } from 'playwright'
|
|
import { join } from 'path'
|
|
import { main } from '../package.json'
|
|
import TestUtil from './testUtil.mjs'
|
|
|
|
let appElectron: ElectronApplication
|
|
let page: Page
|
|
|
|
const __cwd = process.cwd()
|
|
const __isCiProcess = process.env.CI === 'true'
|
|
const __testPath = join(__cwd, 'tests')
|
|
const __testResultPath = join(__testPath, 'results')
|
|
const __testScreenshotPath = join(__testResultPath, 'screenshots')
|
|
|
|
export const beforeAll = async () => {
|
|
// Open Electron app from build directory
|
|
appElectron = await electron.launch({
|
|
args: [
|
|
main,
|
|
...(__isCiProcess ? ['--no-sandbox'] : []),
|
|
'--enable-logging',
|
|
'--ignore-certificate-errors',
|
|
'--ignore-ssl-errors',
|
|
'--ignore-blocklist',
|
|
'--ignore-gpu-blocklist'
|
|
],
|
|
locale: 'en-US',
|
|
colorScheme: 'light',
|
|
env: {
|
|
...process.env,
|
|
NODE_ENV: 'production'
|
|
}
|
|
})
|
|
page = await appElectron.firstWindow()
|
|
|
|
await page.waitForEvent('load')
|
|
|
|
page.on('console', console.log)
|
|
page.on('pageerror', console.log)
|
|
|
|
const evaluateResult = await appElectron.evaluate(async ({ app, BrowserWindow }) => {
|
|
const currentWindow = BrowserWindow.getFocusedWindow()
|
|
|
|
// Fix window position for testing
|
|
currentWindow.setPosition(50, 50)
|
|
currentWindow.setSize(1080, 560)
|
|
|
|
return {
|
|
packaged: app.isPackaged,
|
|
dataPath: app.getPath('userData')
|
|
}
|
|
})
|
|
|
|
base.expect(evaluateResult.packaged, 'app is not packaged').toBe(false)
|
|
}
|
|
|
|
export const afterAll = async () => {
|
|
await appElectron.close()
|
|
}
|
|
|
|
export const test = base.test.extend({
|
|
// eslint-disable-next-line no-empty-pattern
|
|
page: async ({}, use) => {
|
|
await use(page)
|
|
},
|
|
util: async ({ page }, use, testInfo) => {
|
|
await use(new TestUtil(page, testInfo, __testScreenshotPath))
|
|
}
|
|
})
|
|
|
|
export const expect = base.expect
|
|
|
|
export default {
|
|
test,
|
|
expect,
|
|
beforeAll,
|
|
afterAll
|
|
}
|