41 lines
979 B
TypeScript
41 lines
979 B
TypeScript
import { Page } from 'playwright'
|
|
import { TestInfo } from 'playwright/test'
|
|
|
|
export default class TestUtil {
|
|
_page: Page
|
|
|
|
_testInfo: TestInfo
|
|
|
|
_testScreenshotPath: string
|
|
|
|
constructor(page: Page, testInfo: TestInfo, testScreenshotPath: string) {
|
|
this._page = page
|
|
this._testInfo = testInfo
|
|
this._testScreenshotPath = testScreenshotPath
|
|
}
|
|
|
|
async captureScreenshot(pageInstance: Page, screenshotName: string) {
|
|
if (!pageInstance) {
|
|
return
|
|
}
|
|
|
|
try {
|
|
const screenshotPath = `${this._testScreenshotPath}/${screenshotName || `unknown_${Date.now()}`}.png`
|
|
|
|
await pageInstance.screenshot({ path: screenshotPath })
|
|
} catch (error) {
|
|
// Do nothing
|
|
}
|
|
}
|
|
|
|
async onTestError(error: Error) {
|
|
const titleLists = [...this._testInfo.titlePath]
|
|
titleLists.shift()
|
|
const title = titleLists.join('-')
|
|
|
|
await this.captureScreenshot(this._page, `${title}_${Date.now()}`)
|
|
|
|
return new Error(error.message)
|
|
}
|
|
}
|