'Playwright: .toBeVisible() timeout is ignored
I faced an unclear behavior in the Playwright 1.18 toBeVisible() expectation. Here is the test row:
await expect(this.page.locator('.top-row .close i')).toBeVisible({timeout: 2000 })
And if the element is not visible, it hangs forever.
If I jump into the toBeTruthy.js -> toBeTruthy
code, I see that the timeout is calculated to 0 despite the received options:
And for some reason, there is the current timeout from _toMatchText
matcher used. Is this a bug or I'm doing somethin wrong?
Package.json:
"devDependencies": {
"@playwright/test": "^1.18",
"allure-commandline": "^2.17.2",
"allure-playwright": "^2.0.0-beta.14",
"rimraf": "3.0.2"
}
Playwright config:
import { PlaywrightTestConfig, devices } from '@playwright/test';
const config: PlaywrightTestConfig = {
testDir: './spec',
timeout: 10 * 1000,
expect: {
timeout: 3 * 1000
},
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: process.env.CI ? 5 : 1,
reporter: [
['line'],
['json', { outputFile: './test-results/results.json' }],
['./util/test-start-stop-reporter.ts'],
['allure-playwright']
],
use: {
baseURL: 'http://localhost:8080',
screenshot: 'only-on-failure',
channel: 'chrome', //https://playwright.dev/docs/browsers#chromium
headless: false,
viewport: { width: 1820, height: 950 },
ignoreHTTPSErrors: true,
video: 'retain-on-failure',
actionTimeout: 5 * 1000,
navigationTimeout: 30 * 1000,
launchOptions: {
args: ['--window-position=1980,10'],
devtools: process.env.PWDEBUG ? true : false,
},
},
projects: [
{
name: 'Google Chrome',
use: {
channel: 'chrome',
},
},
],
outputDir: 'test-results/',
};
export default config;
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|