mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
test: fix a race in the oopif test (#3211)
This commit is contained in:
parent
487bc589b0
commit
10225d1983
@ -303,12 +303,16 @@ describe.skip(!CHROMIUM)('OOPIF', function() {
|
||||
iframe.style.marginLeft = '42px';
|
||||
iframe.style.marginTop = '17px';
|
||||
});
|
||||
await page.frames()[1].goto(page.frames()[1].url());
|
||||
|
||||
expect(await countOOPIFs(browser)).toBe(1);
|
||||
const handle1 = await page.frames()[1].$('.box:nth-of-type(13)');
|
||||
expect(await handle1.boundingBox()).toEqual({ x: 100 + 42, y: 50 + 17, width: 50, height: 50 });
|
||||
|
||||
await page.evaluate(() => goLocal());
|
||||
await Promise.all([
|
||||
page.frames()[1].waitForNavigation(),
|
||||
page.evaluate(() => goLocal()),
|
||||
]);
|
||||
expect(await countOOPIFs(browser)).toBe(0);
|
||||
const handle2 = await page.frames()[1].$('.box:nth-of-type(13)');
|
||||
expect(await handle2.boundingBox()).toEqual({ x: 100 + 42, y: 50 + 17, width: 50, height: 50 });
|
||||
@ -323,6 +327,7 @@ describe.skip(!CHROMIUM)('OOPIF', function() {
|
||||
iframe.style.marginLeft = '102px';
|
||||
iframe.style.marginTop = '117px';
|
||||
});
|
||||
await page.frames()[1].goto(page.frames()[1].url());
|
||||
|
||||
expect(await countOOPIFs(browser)).toBe(1);
|
||||
const handle1 = await page.frames()[1].$('.box:nth-of-type(13)');
|
||||
|
||||
@ -19,6 +19,7 @@ const registerFixtures = require('./fixtures');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const debug = require('debug');
|
||||
const platform = os.platform();
|
||||
const GoldenUtils = require('../../utils/testrunner/GoldenUtils');
|
||||
const {installCoverageHooks} = require('./coverage');
|
||||
@ -158,10 +159,12 @@ class PlaywrightEnvironment extends NodeEnvironment {
|
||||
if (event.name === 'test_start') {
|
||||
const fn = event.test.fn;
|
||||
event.test.fn = async () => {
|
||||
debug('pw:test')(`start "${testOrSuiteName(event.test)}"`);
|
||||
try {
|
||||
return await this.fixturePool.resolveParametersAndRun(fn);
|
||||
await this.fixturePool.resolveParametersAndRun(fn);
|
||||
} finally {
|
||||
await this.fixturePool.teardownScope('test');
|
||||
debug('pw:test')(`finish "${testOrSuiteName(event.test)}"`);
|
||||
}
|
||||
};
|
||||
}
|
||||
@ -196,6 +199,7 @@ class Fixture {
|
||||
let setupFenceReject;
|
||||
const setupFence = new Promise((f, r) => { setupFenceFulfill = f; setupFenceReject = r; });
|
||||
const teardownFence = new Promise(f => this._teardownFenceCallback = f);
|
||||
debug('pw:test:hook')(`setup "${this.name}"`);
|
||||
this._tearDownComplete = this.fn(params, async value => {
|
||||
this.value = value;
|
||||
setupFenceFulfill();
|
||||
@ -215,8 +219,10 @@ class Fixture {
|
||||
continue;
|
||||
await fixture.teardown();
|
||||
}
|
||||
if (this._setup)
|
||||
if (this._setup) {
|
||||
debug('pw:test:hook')(`teardown "${this.name}"`);
|
||||
this._teardownFenceCallback();
|
||||
}
|
||||
await this._tearDownComplete;
|
||||
this.pool.instances.delete(this.name);
|
||||
}
|
||||
@ -281,3 +287,12 @@ function valueFromEnv(name, defaultValue) {
|
||||
return defaultValue;
|
||||
return JSON.parse(process.env[name]);
|
||||
}
|
||||
|
||||
function testOrSuiteName(o) {
|
||||
if (o.name === 'ROOT_DESCRIBE_BLOCK')
|
||||
return '';
|
||||
let name = o.parent ? testOrSuiteName(o.parent) : '';
|
||||
if (name && o.name)
|
||||
name += ' ';
|
||||
return name + o.name;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user