chore: fix simulated clock bots (#31301)
This commit is contained in:
parent
b62af828c3
commit
2a7f17d820
|
@ -88,11 +88,15 @@ jobs:
|
|||
flakiness-subscription-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_SUBSCRIPTION_ID }}
|
||||
|
||||
test_clock_frozen_time_linux:
|
||||
name: Frozen time library
|
||||
name: time library - ${{ matrix.clock }}
|
||||
environment: ${{ github.event_name == 'push' && 'allow-uploading-flakiness-results' || null }}
|
||||
permissions:
|
||||
id-token: write # This is required for OIDC login (azure/login) to succeed
|
||||
contents: read # This is required for actions/checkout to succeed
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
clock: [frozen, realtime]
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
@ -101,32 +105,36 @@ jobs:
|
|||
node-version: 20
|
||||
browsers-to-install: chromium
|
||||
command: npm run test -- --project=chromium-*
|
||||
bot-name: "frozen-time-library-chromium-linux"
|
||||
bot-name: "${{ matrix.clock }}-time-library-chromium-linux"
|
||||
flakiness-client-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_CLIENT_ID }}
|
||||
flakiness-tenant-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_TENANT_ID }}
|
||||
flakiness-subscription-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_SUBSCRIPTION_ID }}
|
||||
env:
|
||||
PW_FREEZE_TIME: 1
|
||||
PW_CLOCK: ${{ matrix.clock }}
|
||||
|
||||
test_clock_frozen_time_test_runner:
|
||||
name: Frozen time test runner
|
||||
name: time test runner - ${{ matrix.clock }}
|
||||
environment: ${{ github.event_name == 'push' && 'allow-uploading-flakiness-results' || null }}
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
id-token: write # This is required for OIDC login (azure/login) to succeed
|
||||
contents: read # This is required for actions/checkout to succeed
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
clock: [frozen, realtime]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./.github/actions/run-test
|
||||
with:
|
||||
node-version: 20
|
||||
command: npm run ttest
|
||||
bot-name: "frozen-time-runner-chromium-linux"
|
||||
bot-name: "${{ matrix.clock }}-time-runner-chromium-linux"
|
||||
flakiness-client-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_CLIENT_ID }}
|
||||
flakiness-tenant-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_TENANT_ID }}
|
||||
flakiness-subscription-id: ${{ secrets.AZURE_FLAKINESS_DASHBOARD_SUBSCRIPTION_ID }}
|
||||
env:
|
||||
PW_FREEZE_TIME: 1
|
||||
PW_CLOCK: ${{ matrix.clock }}
|
||||
|
||||
test_electron:
|
||||
name: Electron - ${{ matrix.os }}
|
||||
|
|
|
@ -85,11 +85,15 @@ export class Browser extends ChannelOwner<channels.BrowserChannel> implements ap
|
|||
const response = forReuse ? await this._channel.newContextForReuse(contextOptions) : await this._channel.newContext(contextOptions);
|
||||
const context = BrowserContext.from(response.context);
|
||||
await this._browserType._didCreateContext(context, contextOptions, this._options, options.logger || this._logger);
|
||||
if (!forReuse && !!process.env.PW_FREEZE_TIME) {
|
||||
if (!forReuse && process.env.PW_CLOCK === 'frozen') {
|
||||
await this._wrapApiCall(async () => {
|
||||
await context.clock.install({ time: 0 });
|
||||
await context.clock.pauseAt(1000);
|
||||
}, true);
|
||||
} else if (!forReuse && process.env.PW_CLOCK === 'realtime') {
|
||||
await this._wrapApiCall(async () => {
|
||||
await context.clock.install({ time: 0 });
|
||||
}, true);
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
|
|
@ -705,11 +705,12 @@ export function install(globalObject: WindowOrWorkerGlobalScope, config: Install
|
|||
}
|
||||
|
||||
export function inject(globalObject: WindowOrWorkerGlobalScope) {
|
||||
const builtin = platformOriginals(globalObject).bound;
|
||||
const { clock: controller } = install(globalObject);
|
||||
controller.resume();
|
||||
return {
|
||||
controller,
|
||||
builtin: platformOriginals(globalObject).bound,
|
||||
builtin,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -391,7 +391,7 @@ it('should(not) block third party cookies', async ({ context, page, server, brow
|
|||
|
||||
it('should not block third party SameSite=None cookies', async ({ contextFactory, httpsServer, browserName }) => {
|
||||
it.skip(browserName === 'webkit', 'No third party cookies in WebKit');
|
||||
it.skip(!!process.env.PW_FREEZE_TIME);
|
||||
it.skip(process.env.PW_CLOCK === 'frozen');
|
||||
const context = await contextFactory({
|
||||
ignoreHTTPSErrors: true,
|
||||
});
|
||||
|
|
|
@ -43,7 +43,7 @@ it('should ignore eval() scripts by default', async function({ page, server }) {
|
|||
});
|
||||
|
||||
it('shouldn\'t ignore eval() scripts if reportAnonymousScripts is true', async function({ page, server }) {
|
||||
it.skip(!!process.env.PW_FREEZE_TIME);
|
||||
it.skip(!!process.env.PW_CLOCK);
|
||||
await page.coverage.startJSCoverage({ reportAnonymousScripts: true });
|
||||
await page.goto(server.PREFIX + '/jscoverage/eval.html');
|
||||
const coverage = await page.coverage.stopJSCoverage();
|
||||
|
|
|
@ -156,7 +156,7 @@ it('should(not) block third party cookies', async ({ page, server, allowsThirdPa
|
|||
|
||||
it('should not block third party SameSite=None cookies', async ({ httpsServer, browserName, browser }) => {
|
||||
it.skip(browserName === 'webkit', 'No third party cookies in WebKit');
|
||||
it.skip(!!process.env.PW_FREEZE_TIME);
|
||||
it.skip(process.env.PW_CLOCK === 'frozen');
|
||||
const page = await browser.newPage({
|
||||
ignoreHTTPSErrors: true,
|
||||
});
|
||||
|
|
|
@ -16,9 +16,12 @@
|
|||
|
||||
import { test as it, expect } from './pageTest';
|
||||
|
||||
it.skip(!process.env.PW_FREEZE_TIME);
|
||||
|
||||
it('clock should be frozen', async ({ page }) => {
|
||||
await page.clock.setSystemTime(0);
|
||||
expect(await page.evaluate('Date.now()')).toBe(0);
|
||||
it.skip(process.env.PW_CLOCK !== 'frozen');
|
||||
expect(await page.evaluate('Date.now()')).toBe(1000);
|
||||
});
|
||||
|
||||
it('clock should be realtime', async ({ page }) => {
|
||||
it.skip(process.env.PW_CLOCK !== 'realtime');
|
||||
expect(await page.evaluate('Date.now()')).toBeLessThan(1000);
|
||||
});
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
import { test, expect } from './pageTest';
|
||||
|
||||
test.skip(!!process.env.PW_FREEZE_TIME);
|
||||
test.skip(!!process.env.PW_CLOCK);
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
|
|
|
@ -362,7 +362,7 @@ it('should properly serialize PerformanceMeasure object', async ({ page }) => {
|
|||
});
|
||||
|
||||
it('should properly serialize window.performance object', async ({ page }) => {
|
||||
it.skip(!!process.env.PW_FREEZE_TIME);
|
||||
it.skip(!!process.env.PW_CLOCK);
|
||||
|
||||
expect(await page.evaluate(() => performance)).toEqual({
|
||||
'navigation': {
|
||||
|
|
|
@ -481,7 +481,7 @@ it('js redirect overrides url bar navigation ', async ({ page, server, browserNa
|
|||
|
||||
it('should succeed on url bar navigation when there is pending navigation', async ({ page, server, browserName }) => {
|
||||
it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/21574' });
|
||||
it.skip(!!process.env.PW_FREEZE_TIME);
|
||||
it.skip(process.env.PW_CLOCK === 'frozen');
|
||||
server.setRoute('/a', (req, res) => {
|
||||
res.writeHead(200, { 'content-type': 'text/html' });
|
||||
res.end(`
|
||||
|
@ -754,7 +754,7 @@ it('should properly wait for load', async ({ page, server, browserName }) => {
|
|||
|
||||
it('should not resolve goto upon window.stop()', async ({ browserName, page, server }) => {
|
||||
it.fixme(browserName === 'firefox', 'load/domcontentloaded events are flaky');
|
||||
it.skip(!!process.env.PW_FREEZE_TIME);
|
||||
it.skip(process.env.PW_CLOCK === 'frozen');
|
||||
|
||||
let response;
|
||||
server.setRoute('/module.js', (req, res) => {
|
||||
|
@ -797,7 +797,7 @@ it('should return when navigation is committed if commit is specified', async ({
|
|||
});
|
||||
|
||||
it('should wait for load when iframe attaches and detaches', async ({ page, server }) => {
|
||||
it.skip(!!process.env.PW_FREEZE_TIME);
|
||||
it.skip(process.env.PW_CLOCK === 'frozen');
|
||||
server.setRoute('/empty.html', (req, res) => {
|
||||
res.writeHead(200, { 'content-type': 'text/html' });
|
||||
res.end(`
|
||||
|
|
|
@ -245,7 +245,7 @@ it('page.goForward during renderer-initiated navigation', async ({ page, server
|
|||
|
||||
it('regression test for issue 20791', async ({ page, server }) => {
|
||||
it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/20791' });
|
||||
it.skip(!!process.env.PW_FREEZE_TIME);
|
||||
it.skip(process.env.PW_CLOCK === 'frozen');
|
||||
server.setRoute('/iframe.html', (req, res) => {
|
||||
res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' });
|
||||
// iframe access parent frame to log a value from it.
|
||||
|
|
Loading…
Reference in New Issue