<h3 dir="auto">System info</h3>
<ul dir="auto">
<li>Playwright Version: [v1.34.3]</li>
<li>Operating System: [macOS 13.3.1]</li>
<li>Browser: [All]</li>
<li>Other info:</li>
</ul>
<p dir="auto"><strong>Test file (self-contained)</strong></p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="test.only('Alice Bob', async ({
  page,
}) =&gt; {
  await page.route('http://foo.bar', (route) =&gt; {
    route.fulfill({
      status: 303,
      headers: {
        location:
          'http://alice.bob',
      },
    });
  });

  await page.route('http://alice.bob', (route) =&gt; {
    route.fulfill({
      status: 200,
      body: 'Alice Bob!'
    });
  });

  await page.goto('http://alice.bob');
  await page.goto('http://foo.bar');
});"><pre class="notranslate"><span class="pl-s1">test</span><span class="pl-kos">.</span><span class="pl-en">only</span><span class="pl-kos">(</span><span class="pl-s">'Alice Bob'</span><span class="pl-kos">,</span> <span class="pl-k">async</span> <span class="pl-kos">(</span><span class="pl-kos">{</span>
  page<span class="pl-kos">,</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
  <span class="pl-k">await</span> <span class="pl-s1">page</span><span class="pl-kos">.</span><span class="pl-en">route</span><span class="pl-kos">(</span><span class="pl-s">'http://foo.bar'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-s1">route</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
    <span class="pl-s1">route</span><span class="pl-kos">.</span><span class="pl-en">fulfill</span><span class="pl-kos">(</span><span class="pl-kos">{</span>
      <span class="pl-c1">status</span>: <span class="pl-c1">303</span><span class="pl-kos">,</span>
      <span class="pl-c1">headers</span>: <span class="pl-kos">{</span>
        <span class="pl-c1">location</span>:
          <span class="pl-s">'http://alice.bob'</span><span class="pl-kos">,</span>
      <span class="pl-kos">}</span><span class="pl-kos">,</span>
    <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

  <span class="pl-k">await</span> <span class="pl-s1">page</span><span class="pl-kos">.</span><span class="pl-en">route</span><span class="pl-kos">(</span><span class="pl-s">'http://alice.bob'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-s1">route</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
    <span class="pl-s1">route</span><span class="pl-kos">.</span><span class="pl-en">fulfill</span><span class="pl-kos">(</span><span class="pl-kos">{</span>
      <span class="pl-c1">status</span>: <span class="pl-c1">200</span><span class="pl-kos">,</span>
      <span class="pl-c1">body</span>: <span class="pl-s">'Alice Bob!'</span>
    <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

  <span class="pl-k">await</span> <span class="pl-s1">page</span><span class="pl-kos">.</span><span class="pl-en">goto</span><span class="pl-kos">(</span><span class="pl-s">'http://alice.bob'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
  <span class="pl-k">await</span> <span class="pl-s1">page</span><span class="pl-kos">.</span><span class="pl-en">goto</span><span class="pl-kos">(</span><span class="pl-s">'http://foo.bar'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
<p dir="auto"><strong>Steps</strong></p>
<ul dir="auto">
<li>[Run the test]</li>
</ul>
<p dir="auto"><strong>Expected</strong></p>
<p dir="auto"><code class="notranslate">http://alice.bob</code> ← Alice Bob!<br>
<code class="notranslate">http://foo.bar</code> ← Alice Bob!</p>
<p dir="auto"><strong>Actual</strong></p>
<p dir="auto"><code class="notranslate">http://alice.bob</code> ← Alice Bob!<br>
<code class="notranslate">http://foo.bar</code> ← DNS_PROBE_FINISHED_NXDOMAIN</p>
<h3 dir="auto">System info</h3>
<ul dir="auto">
<li>Playwright Version: v1.35</li>
<li>Operating System: macOS 11.6.1</li>
<li>Browser: Chromium</li>
</ul>
<p dir="auto"><strong>Config file</strong></p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  testDir: './tests',
  fullyParallel: true,
  forbidOnly: !!process.env.CI,
  reporter: 'html',
  timeout: 60000,
  use: {
    baseURL: 'https://pressreleasehub-staging.pa.media/',
    trace: 'retain-on-failure',
    headless: false,
    browserName: 'chromium',
    viewport: { width: 1680, height: 1050 },
    video: 'retain-on-failure',
    screenshot: 'only-on-failure',
    actionTimeout: 30000,
    launchOptions: {
      slowMo: 300,
    },
  },
  workers: 4
});"><pre class="notranslate"><code class="notranslate">import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  testDir: './tests',
  fullyParallel: true,
  forbidOnly: !!process.env.CI,
  reporter: 'html',
  timeout: 60000,
  use: {
    baseURL: 'https://pressreleasehub-staging.pa.media/',
    trace: 'retain-on-failure',
    headless: false,
    browserName: 'chromium',
    viewport: { width: 1680, height: 1050 },
    video: 'retain-on-failure',
    screenshot: 'only-on-failure',
    actionTimeout: 30000,
    launchOptions: {
      slowMo: 300,
    },
  },
  workers: 4
});
</code></pre></div>
<p dir="auto"><strong>Test file (self-contained)</strong></p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="import { test, expect } from '@playwright/test';

test.describe('Verify Press Release Hub Contributor Pages', () =&gt; {

  test.only('Verify Contributor Pages', async ({ page }) =&gt; {
    await page.goto('https://pressreleasehub-staging.pa.media/');

    // Open the Contributors menu
    await page.click('#navbar-contributors');

    // Get all menu links within the Contributors menu
    const allLinks = await page.locator('.NavigationBar_subMenuColumns__fN1Rt &gt; li &gt; a').all();

    // Assert 37 menu links are present
    expect(allLinks.length).toBe(37);

    for(let i = 0; i &lt; allLinks.length; i++) {
      const contributorName = (await allLinks[i].innerText()).toLowerCase();
      await allLinks[i].click();

      const contributorHeading = page.locator('.SectionHeader_sectionHeader___3ygo ').getByRole('heading', {name: contributorName.toLowerCase()});
      await contributorHeading.waitFor();

      await page.goBack();
      await page.click('#navbar-contributors');
    }
  });
});"><pre class="notranslate"><code class="notranslate">import { test, expect } from '@playwright/test';

test.describe('Verify Press Release Hub Contributor Pages', () =&gt; {

  test.only('Verify Contributor Pages', async ({ page }) =&gt; {
    await page.goto('https://pressreleasehub-staging.pa.media/');

    // Open the Contributors menu
    await page.click('#navbar-contributors');

    // Get all menu links within the Contributors menu
    const allLinks = await page.locator('.NavigationBar_subMenuColumns__fN1Rt &gt; li &gt; a').all();

    // Assert 37 menu links are present
    expect(allLinks.length).toBe(37);

    for(let i = 0; i &lt; allLinks.length; i++) {
      const contributorName = (await allLinks[i].innerText()).toLowerCase();
      await allLinks[i].click();

      const contributorHeading = page.locator('.SectionHeader_sectionHeader___3ygo ').getByRole('heading', {name: contributorName.toLowerCase()});
      await contributorHeading.waitFor();

      await page.goBack();
      await page.click('#navbar-contributors');
    }
  });
});
</code></pre></div>
<p dir="auto"><strong>Steps</strong></p>
<ul dir="auto">
<li>Run the test</li>
</ul>
<p dir="auto"><strong>Expected</strong></p>
<p dir="auto">All stages of the test should complete successfully</p>
<p dir="auto"><strong>Actual</strong></p>
<p dir="auto">The test itself does actually seem to pass, however, instead of completing successfully it hangs until the timeout value of 60 seconds is reached and then fails with the following error:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Test finished within timeout of 60000ms, but tearing down &quot;context&quot; ran out of time. Please allow more time for the test, since teardown is attributed towards the test timeout budget."><pre class="notranslate"><code class="notranslate">Test finished within timeout of 60000ms, but tearing down "context" ran out of time. Please allow more time for the test, since teardown is attributed towards the test timeout budget.
</code></pre></div>
<p dir="auto">However, the test is completing well before that 60 second timeout.</p>