我在 Playwright 1.18 toBeVisible() 期望中遇到了一个不清楚的行为。这是测试行:
await expect(this.page.locator('.top-row .close i')).toBeVisible({timeout: 2000 })
如果该元素不可见,它将永远挂起。
如果我跳入toBeTruthy.js -> toBeTruthy
代码,我会看到超时计算为 0,尽管收到了选项:
_toMatchText
由于某种原因,使用的匹配器存在当前超时。这是一个错误还是我做错了什么?
包.json:
"devDependencies": {
"@playwright/test": "^1.18",
"allure-commandline": "^2.17.2",
"allure-playwright": "^2.0.0-beta.14",
"rimraf": "3.0.2"
}
编剧配置:
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;