diagnostic.spec.ts

1.6 KB · raw

1import { test } from "@playwright/test";2import { fileURLToPath } from "url";3import { dirname, join } from "path";4import os from "os";5import fs from "fs/promises";67const __filename = fileURLToPath(import.meta.url);8const __dirname = dirname(__filename);9const EXTENSION_PATH = join(__dirname, "..", "dist");1011test.describe("Extension SW Diagnostic", () => {12  test("diagnostic - check if SW starts with devtools", async () => {13    const { chromium } = await import("playwright");14    const userDataDir = join(os.tmpdir(), `peach-diag2-${Date.now()}`);15    await fs.mkdir(userDataDir, { recursive: true });16    const ctx = await chromium.launchPersistentContext(userDataDir, {17      headless: false,18      args: [19        `--load-extension=${EXTENSION_PATH}`,20        `--disable-extensions-except=${EXTENSION_PATH}`,21      ],22    });2324    await new Promise(r => setTimeout(r, 8000));2526    const sws = ctx.serviceWorkers();27    const pages = ctx.pages();2829    console.log("=== DIAGNOSTIC RESULTS ===");30    console.log(`Service workers: ${sws.length}`);31    console.log(`Pages: ${pages.length}`);32    console.log(`Page URLs: ${pages.map(p => p.url()).join(", ")}`);33    console.log(`SW URLs: ${sws.map(s => s.url()).join(", ")}`);3435    if (sws.length > 0) {36      const sw = sws[0];37      const extId = new URL(sw.url()).host;38      console.log(`Extension ID: ${extId}`);39      const popup = await ctx.newPage();40      await popup.goto(`chrome-extension://${extId}/src/popup/index.html`);41      await popup.waitForTimeout(3000);42      console.log(`Popup URL: ${popup.url()}`);43      console.log(`Popup title: ${await popup.title()}`);44    }4546    await ctx.close();47  });48});