|
| 1 | +import * as fs from 'fs' |
| 2 | +import { getBrowser, getPage, getWorker } from './common.mjs' |
| 3 | + |
| 4 | +const screenshotsDir = 'tests/screenshots' |
| 5 | +let page |
| 6 | + |
| 7 | +async function addLogger(page, results, name) { |
| 8 | + page.on('console', async (msg) => { |
| 9 | + const text = msg.text() |
| 10 | + if (text.startsWith('links:')) { |
| 11 | + const value = await msg.args()[1].jsonValue() |
| 12 | + results.unshift(`links count: ${value.length}`) |
| 13 | + } else if (text.startsWith('domains:')) { |
| 14 | + const value = await msg.args()[1].jsonValue() |
| 15 | + results.unshift(`domains count: ${value.length}`) |
| 16 | + } else { |
| 17 | + results.push(`${name}: ${text}`) |
| 18 | + } |
| 19 | + }) |
| 20 | +} |
| 21 | + |
| 22 | +;(async () => { |
| 23 | + fs.rmSync(screenshotsDir, { recursive: true, force: true }) |
| 24 | + fs.mkdirSync(screenshotsDir) |
| 25 | + |
| 26 | + console.log('process.env.URL:', process.env.URL) |
| 27 | + const url = new URL(process.env.URL) |
| 28 | + console.log('url.href:', url.href) |
| 29 | + |
| 30 | + // Get Browser |
| 31 | + const browser = await getBrowser() |
| 32 | + console.log('browser:', browser) |
| 33 | + |
| 34 | + // Get Service Worker |
| 35 | + const worker = await getWorker(browser) |
| 36 | + console.log('worker:', worker) |
| 37 | + |
| 38 | + const logs = [] |
| 39 | + |
| 40 | + page = await browser.newPage() |
| 41 | + // page.on('console', (msg) => logs.push(msg.text())) |
| 42 | + await addLogger(page, logs, 'site') |
| 43 | + await page.goto(url.href) |
| 44 | + await page.bringToFront() |
| 45 | + await page.waitForNetworkIdle() |
| 46 | + await new Promise((resolve) => setTimeout(resolve, 1000)) |
| 47 | + |
| 48 | + await worker.evaluate('chrome.action.openPopup();') |
| 49 | + page = await getPage(browser, 'popup.html') |
| 50 | + // page.on('console', (msg) => logs.push(msg.text())) |
| 51 | + await addLogger(page, logs, 'popup') |
| 52 | + await page.locator('a[data-filter=""]').click() |
| 53 | + |
| 54 | + page = await getPage(browser, 'links.html', false, '768x1024') |
| 55 | + // page.on('console', (msg) => logs.push(msg.text())) |
| 56 | + await addLogger(page, logs, 'links') |
| 57 | + await page.waitForNetworkIdle() |
| 58 | + await page.screenshot({ path: `${screenshotsDir}/links.png` }) |
| 59 | + |
| 60 | + await browser.close() |
| 61 | + |
| 62 | + console.log('logs:', logs) |
| 63 | + const content = JSON.stringify(logs) |
| 64 | + fs.writeFileSync(`${screenshotsDir}/logs.txt`, content) |
| 65 | +})() |
0 commit comments