Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Target page, context or browser has been closed #30836

Closed
sravanmedarapu opened this issue May 15, 2024 · 1 comment
Closed

Target page, context or browser has been closed #30836

sravanmedarapu opened this issue May 15, 2024 · 1 comment

Comments

@sravanmedarapu
Copy link

sravanmedarapu commented May 15, 2024

I am working on a POC to see to check the feasibility of a web extension.

Running a bunch of tests in parallel, at a regular intervals in both Github workflow and local noticed Error: page.goto: Target page, context or browser has been closed issues (mostly around the beginning of the test.

Error: page.goto: Target page, context or browser has been closed

   at ../steps/base_steps.ts:10

   8 |
   9 |     async goToOnboarding() {
> 10 |         await this.page.goto(`chrome-extension://${this.extensionId}/home.html#/onboarding`);
     |                         ^
  11 |         await this.page.waitForLoadState('domcontentloaded');
  12 |         // Find the extension tab and close it
  13 |         // let pages = await context.pages();

    at OnboardingSteps.goToOnboarding (/Users//src/extension-wallet-playwright-poc/tests/steps/base_steps.ts:10:25)
    at OnboardingSteps.verifyOnboardingPage (/Users//src/extension-wallet-playwright-poc/tests/steps/onboarding_steps.ts:17:16)
    at /Users/src/extension-wallet-playwright-poc/tests/e2e/onboarding.spec.ts:17:28

  pw:browser <launching> /Users/Library/Caches/ms-playwright/chromium-1117/chrome-mac/Chromium.app/Contents/MacOS/Chromium --disable-field-trial-config --disable-background-networking --enable-features=NetworkService,NetworkServiceInProcess --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-background-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-features=ImprovedCookieControls,LazyFrameLoading,GlobalMediaControls,DestroyProfileOnBrowserClose,MediaRouter,DialMediaRouteProvider,AcceptCHFrame,AutoExpandDetailsElement,CertificateTransparencyComponentUpdater,AvoidUnnecessaryBeforeUnloadCheckSync,Translate,HttpsUpgrades,PaintHolding --allow-pre-commit-input --disable-hang-monitor --disable-ipc-flooding-protection --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --force-color-profile=srgb --metrics-recording-only --no-first-run --enable-automation --password-store=basic --use-mock-keychain --no-service-autorun --export-tagged-pdf --disable-search-engine-choice-screen --enable-use-zoom-for-dsf=false --no-sandbox  --disable-extensions-except=/Users//src/extension-wallet-playwright-poc/tests/resources/extension/release-2.12.0-9fe78fb-poc --log-path=/Users//src/extension-wallet-playwright-poc/tests/fixtures/logs/chrome.log --enable-logging --v=1 --user-data-dir=/var/folders/nh/3y5p8tfj7vx99lg40p1svh_00000gn/T/playwright_chromiumdev_profile-b10EGLkJLO12 --remote-debugging-pipe about:blank +129ms
  pw:browser <launched> pid=27342 +1ms
  pw:browser <launching> /Users//Library/Caches/ms-playwright/ffmpeg-1009/ffmpeg-mac -loglevel error -f image2pipe -avioflags direct -fpsprobesize 0 -probesize 32 -analyzeduration 0 -c:v mjpeg -i - -y -an -r 25 -c:v vp8 -qmin 0 -qmax 50 -crf 8 -deadline realtime -speed 8 -b:v 1M -threads 1 -vf pad=800:450:0:0:gray,crop=800:450:0:0 /Users//src/extension-wallet-playwright-poc/recordings/7d11fdbae329828c00664d7a4b5cf3c9.webm +564ms
  pw:browser <launched> pid=27361 +1ms
  pw:browser <launching> /Users//Library/Caches/ms-playwright/ffmpeg-1009/ffmpeg-mac -loglevel error -f image2pipe -avioflags direct -fpsprobesize 0 -probesize 32 -analyzeduration 0 -c:v mjpeg -i - -y -an -r 25 -c:v vp8 -qmin 0 -qmax 50 -crf 8 -deadline realtime -speed 8 -b:v 1M -threads 1 -vf pad=800:450:0:0:gray,crop=800:450:0:0 /Users//src/extension-wallet-playwright-poc/recordings/6de56f088874e342dee6f72ba9b1e2c4.webm +58ms
  pw:browser <launched> pid=27365 +1ms

Setup logic:


export const test = base.extend<{
  context: BrowserContext
  extensionId: string
}>({
  context: async ({}, use) => {
    const pathToExtension = path.join(__dirname, '../resources/extension/release-2.12.0-9fe78fb-poc')
    const context = await chromium.launchPersistentContext('', {
      headless: false,
      recordVideo: {
        dir: "./recordings"
      }
        ,
      args: [
        process.env.CI ? `--headless=new` : '',
        // `--headless=false`,
        `--disable-extensions-except=${pathToExtension}`,
          `--log-path=${path.join(__dirname,'/logs/chrome.log')}`,
          `--enable-logging`,
          `--v=1`,
      ],
    })

    await use(context)

    // await context.close()
  },
  extensionId: async ({ context }, use) => {
    // for manifest v3:
    let [background] = context.serviceWorkers()
    if (!background) {
      background = await context.waitForEvent('serviceworker')
    }
    
    const extensionId = background.url().split('/')[2]
    await use(extensionId)
  },
})

test.beforeEach(async ({ context, page, extensionId }) => {
  console.log('setup: beforeEach');
  const defaultLaunchPagePromise = context.waitForEvent('page');
  const defaultLaunchPage = await defaultLaunchPagePromise;
  // TODO: defaultLaunchPage.close() sometimes closing actual page instead of extension page
  // if (page !== defaultLaunchPage) {
  //   await defaultLaunchPage.close();
  // }
  Steps.initializeSteps(page, context, extensionId);
  await Steps.onboarding.goToOnboarding();
});

test.afterEach(async ({ page, context  }, testInfo) => {
  console.log('teardown: afterEach');

  const screenshot = await page. screenshot();
  await testInfo. attach('screenshot', { body: screenshot, contentType: 'image/ png' });

  await context.close()
})

Ran 7 tests, 1 or 2 tests failing with this reason on 1st iteration and same tests passing in the next retry iteration.

Wondering if there is a workaround for this issue.
Screenshot 2024-05-15 at 21 42 47

@sravanmedarapu sravanmedarapu changed the title [Please read the message below] Target page, context or browser has been closed May 15, 2024
@yury-s
Copy link
Member

yury-s commented May 16, 2024

If you want to report a bug, please follow our bug template.

@yury-s yury-s closed this as completed May 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants