<h3 dir="auto">System info</h3>
<ul dir="auto">
<li>Playwright Version: [v1.XX]</li>
<li>Operating System: [All, Windows 11, Ubuntu 20, macOS 13.2, etc.]</li>
<li>Browser: [All, Chromium, Firefox, WebKit]</li>
<li>Other info:</li>
</ul>
<h3 dir="auto">Source code</h3>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> I provided exact source code that allows reproducing the issue locally.</li>
</ul>




<p dir="auto"><strong>Link to the GitHub repository with the repro</strong></p>
<p dir="auto">[https://github.com/your_profile/playwright_issue_title]</p>
<p dir="auto">or</p>
<p dir="auto"><strong>Config file</strong></p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="// playwright.config.ts
import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  projects: [
    {
      name: 'chromium',
      use: { ...devices['Desktop Chrome'], },
    },
});"><pre class="notranslate"><span class="pl-c">// playwright.config.ts</span>
<span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">defineConfig</span><span class="pl-kos">,</span> <span class="pl-s1">devices</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'@playwright/test'</span><span class="pl-kos">;</span>

<span class="pl-k">export</span> <span class="pl-k">default</span> <span class="pl-en">defineConfig</span><span class="pl-kos">(</span><span class="pl-kos">{</span>
  <span class="pl-c1">projects</span>: <span class="pl-kos">[</span>
    <span class="pl-kos">{</span>
      <span class="pl-c1">name</span>: <span class="pl-s">'chromium'</span><span class="pl-kos">,</span>
      <span class="pl-c1">use</span>: <span class="pl-kos">{</span> ...<span class="pl-s1">devices</span><span class="pl-kos">[</span><span class="pl-s">'Desktop Chrome'</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-kos">;</span></pre></div>
<p dir="auto"><strong>fixture  (self-contained)</strong></p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="
import { test as base, expect } from '@playwright/test';

exports.expect = expect;

export const test = base.extend({

   WebApp: async ({page}, use) =&gt; {

        
        await page.waitForURL(baseURL);
        await expect(page).toHaveTitle(/XXXXXX/);
        await page.locator('input:has-text(&quot;Login&quot;)').click();
        await expect(page).toHaveURL(baseURL + 'LoginOrSignUp',{ timeout: (1000 * 1000) });
        
        //Find Tab(with css = e-tab-text) with text = Login click it
        await page.locator('div[role=&quot;toolbar&quot;] &gt;&gt; text=Login').click();
               
        await page.fill(&quot;#logInEmail&quot;,userName);
        await page.fill('#loginInPassword', password);
        await page.locator('#loginSignIn').click();

        await page.waitForURL(&quot;https://XXXXXXXX/&quot;)

        await use(WebApp)
   },

});"><pre class="notranslate"><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">test</span> <span class="pl-k">as</span> <span class="pl-s1">base</span><span class="pl-kos">,</span> <span class="pl-s1">expect</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'@playwright/test'</span><span class="pl-kos">;</span>

<span class="pl-s1">exports</span><span class="pl-kos">.</span><span class="pl-c1">expect</span> <span class="pl-c1">=</span> <span class="pl-s1">expect</span><span class="pl-kos">;</span>

<span class="pl-k">export</span> <span class="pl-k">const</span> <span class="pl-s1">test</span> <span class="pl-c1">=</span> <span class="pl-s1">base</span><span class="pl-kos">.</span><span class="pl-en">extend</span><span class="pl-kos">(</span><span class="pl-kos">{</span>

   <span class="pl-en">WebApp</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-s1">use</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">waitForURL</span><span class="pl-kos">(</span><span class="pl-s1">baseURL</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
        <span class="pl-k">await</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">page</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveTitle</span><span class="pl-kos">(</span><span class="pl-pds"><span class="pl-c1">/</span>XXXXXX<span class="pl-c1">/</span></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">locator</span><span class="pl-kos">(</span><span class="pl-s">'input:has-text("Login")'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">click</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-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">page</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveURL</span><span class="pl-kos">(</span><span class="pl-s1">baseURL</span> <span class="pl-c1">+</span> <span class="pl-s">'LoginOrSignUp'</span><span class="pl-kos">,</span><span class="pl-kos">{</span> <span class="pl-c1">timeout</span>: <span class="pl-kos">(</span><span class="pl-c1">1000</span> <span class="pl-c1">*</span> <span class="pl-c1">1000</span><span class="pl-kos">)</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
        
        <span class="pl-c">//Find Tab(with css = e-tab-text) with text = Login click it</span>
        <span class="pl-k">await</span> <span class="pl-s1">page</span><span class="pl-kos">.</span><span class="pl-en">locator</span><span class="pl-kos">(</span><span class="pl-s">'div[role="toolbar"] &gt;&gt; text=Login'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">click</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">fill</span><span class="pl-kos">(</span><span class="pl-s">"#logInEmail"</span><span class="pl-kos">,</span><span class="pl-s1">userName</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">fill</span><span class="pl-kos">(</span><span class="pl-s">'#loginInPassword'</span><span class="pl-kos">,</span> <span class="pl-s1">password</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">locator</span><span class="pl-kos">(</span><span class="pl-s">'#loginSignIn'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">click</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">waitForURL</span><span class="pl-kos">(</span><span class="pl-s">"https://XXXXXXXX/"</span><span class="pl-kos">)</span>

        <span class="pl-k">await</span> <span class="pl-s1">use</span><span class="pl-kos">(</span><span class="pl-v">WebApp</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></pre></div>
<p dir="auto"><strong>Steps</strong></p>
<ul dir="auto">
<li>[Run the test]</li>
<li>[...]</li>
</ul>
<p dir="auto"><strong>Expected</strong></p>
<p dir="auto">Should compile, i want to supply the value from test</p>
<p dir="auto">test.use({<br>
geolocation : {latitude:67.74959, longitude: -52.19903},<br>
permissions :['geolocation'],<br>
project: 'Mobile Chrome',<br>
userName : '<a href="mailto:abced@ghij.com">abced@ghij.com</a>',<br>
password : 'jgjgkjgkkj',<br>
baseURL : "XXXXXX"<br>
});</p>
<p dir="auto">what is the right way of configuring the fixture with variable that will can be overriden from test ?<br>
<strong>Actual</strong></p>
<p dir="auto">compiler error</p>
<h3 dir="auto">System info</h3>
<ul dir="auto">
<li>Playwright Version: [v1.35.1]</li>
<li>Operating System: [Ubuntu 20, macOS 13.4]</li>
<li>Browser: [All]</li>
<li>Other info:</li>
</ul>
<h3 dir="auto">Source code</h3>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> I provided exact source code that allows reproducing the issue locally.</li>
</ul>




<p dir="auto"><strong>Link to the GitHub repository with the repro</strong></p>
<p dir="auto"><a href="https://github.com/cdcasey/skip-test-repro">https://github.com/cdcasey/skip-test-repro</a></p>
<p dir="auto">Currently I have 16 tests across 5 files. Each file has its own page object and fixture. Each test block uses its corresponding page fixture. The page fixture runs through the login process, so each test block includes a fresh login. I assume this makes the tests isolated from each other. Yet if any one of the tests fails, the rest are skipped.</p>
<p dir="auto">We're using one worker, but the order of the tests doesn't matter. So if the second test that's run fails, the results of the suite are<br>
passed: 1<br>
failed: 1<br>
skipped: 14</p>
<p dir="auto">Expected output:<br>
passed: 15<br>
failed: 1<br>
skipped: 0</p>
<p dir="auto">Update: some people suggested I try fullyParallel: true in the config or expect.soft for the test assertions. Neither changed the results.</p>
<p dir="auto">To be sure, I'm not sure if this is a bug or if I'm misusing fixtures.</p>