diff --git a/src/browser/commands/getPuppeteer.js b/src/browser/commands/getPuppeteer.js index abe20c954..3eeaa7195 100644 --- a/src/browser/commands/getPuppeteer.js +++ b/src/browser/commands/getPuppeteer.js @@ -39,7 +39,7 @@ module.exports.default = browser => { isSettled = true; - browser.markAsBroken(); + browser.markAsBroken({ stubBrowserCommands: false }); reject(new Error(`Unable to establish a CDP connection in ${PUPPETEER_REJECT_TIMEOUT} ms`)); }, PUPPETEER_REJECT_TIMEOUT); diff --git a/src/browser/existing-browser.ts b/src/browser/existing-browser.ts index f3f407083..9ffd82e05 100644 --- a/src/browser/existing-browser.ts +++ b/src/browser/existing-browser.ts @@ -148,14 +148,16 @@ export class ExistingBrowser extends Browser { return this; } - markAsBroken(): void { + markAsBroken({ stubBrowserCommands = false } = {}): void { if (this.state.isBroken) { return; } this.applyState({ isBroken: true }); - this._stubCommands(); + if (stubBrowserCommands) { + this._stubCommands(); + } } quit(): void { diff --git a/src/worker/runner/browser-pool.js b/src/worker/runner/browser-pool.js index e6165510f..78dcb677d 100644 --- a/src/worker/runner/browser-pool.js +++ b/src/worker/runner/browser-pool.js @@ -35,7 +35,7 @@ module.exports = class BrowserPool { throw error; } - browser.markAsBroken(); + browser.markAsBroken({ stubBrowserCommands: true }); this.freeBrowser(browser); throw Object.assign(error, { meta: browser.meta }); diff --git a/src/worker/runner/test-runner/index.js b/src/worker/runner/test-runner/index.js index a32bb120f..6b45012e6 100644 --- a/src/worker/runner/test-runner/index.js +++ b/src/worker/runner/test-runner/index.js @@ -99,7 +99,7 @@ module.exports = class TestRunner { // 1. before afterEach hook to prevent working with broken sessions // 2. after collecting all assertView errors (including afterEach section) if (!this._browser.state.isBroken && isSessionBroken(error, this._config)) { - this._browser.markAsBroken(); + this._browser.markAsBroken({ stubBrowserCommands: true }); } testplaneCtx.assertViewResults = assertViewResults ? assertViewResults.toRawObject() : []; @@ -186,7 +186,7 @@ module.exports = class TestRunner { } if (isSessionBroken(error, this._config)) { - this._browser.markAsBroken(); + this._browser.markAsBroken({ stubBrowserCommands: true }); } try { diff --git a/test/src/browser/existing-browser.js b/test/src/browser/existing-browser.js index 982606f9d..b1ee35478 100644 --- a/test/src/browser/existing-browser.js +++ b/test/src/browser/existing-browser.js @@ -1106,12 +1106,34 @@ describe("ExistingBrowser", () => { assert.equal(browser.state.isBroken, true); }); + it("should not stub session commands by default", async () => { + session.commandList = ["foo"]; + session.foo = sandbox.stub().resolves("foo"); + const browser = await initBrowser_(); + + browser.markAsBroken(); + + const result = await session.foo(); + assert.equal(result, "foo"); + }); + + it("should stub session commands if 'stubBrowserCommands' param was used", async () => { + session.commandList = ["foo"]; + session.foo = sandbox.stub().resolves("foo"); + const browser = await initBrowser_(); + + browser.markAsBroken({ stubBrowserCommands: true }); + + const result = await session.foo(); + assert.isUndefined(result); + }); + it('should not stub "deleteSession" command', async () => { session.commandList = ["deleteSession"]; session.deleteSession = () => "deleted"; const browser = await initBrowser_(); - browser.markAsBroken(); + browser.markAsBroken({ stubBrowserCommands: true }); assert.equal(session.deleteSession(), "deleted"); }); @@ -1121,30 +1143,19 @@ describe("ExistingBrowser", () => { session.isProp = true; const browser = await initBrowser_(); - browser.markAsBroken(); + browser.markAsBroken({ stubBrowserCommands: true }); assert.isTrue(session.isProp); }); - it("should stub session commands", async () => { - session.commandList = ["foo"]; - session.foo = sandbox.stub().resolves("foo"); - const browser = await initBrowser_(); - - browser.markAsBroken(); - - const result = await session.foo(); - assert.isUndefined(result); - }); - it("should not mark session as broken twice", async () => { session.commandList = ["foo"]; session.foo = () => "foo"; const browser = await initBrowser_(); - browser.markAsBroken(); + browser.markAsBroken({ stubBrowserCommands: true }); session.overwriteCommand.resetHistory(); - browser.markAsBroken(); + browser.markAsBroken({ stubBrowserCommands: true }); assert.notCalled(session.overwriteCommand); }); diff --git a/test/src/worker/runner/browser-pool.js b/test/src/worker/runner/browser-pool.js index 8107da7e1..399462a6e 100644 --- a/test/src/worker/runner/browser-pool.js +++ b/test/src/worker/runner/browser-pool.js @@ -131,7 +131,7 @@ describe("worker/browser-pool", () => { .getBrowser({ browserId: "bro-id" }) .catch(e => e); - assert.calledOnceWith(browser.markAsBroken); + assert.calledOnceWith(browser.markAsBroken, { stubBrowserCommands: true }); }); it("should free browser", async () => { diff --git a/test/src/worker/runner/test-runner/index.js b/test/src/worker/runner/test-runner/index.js index b01c23e4b..52f66627d 100644 --- a/test/src/worker/runner/test-runner/index.js +++ b/test/src/worker/runner/test-runner/index.js @@ -564,7 +564,7 @@ describe("worker/runner/test-runner", () => { await run_({ runner }).catch(() => {}); - assert.calledOnce(browser.markAsBroken); + assert.calledOnceWith(browser.markAsBroken, { stubBrowserCommands: true }); }); }); @@ -590,7 +590,7 @@ describe("worker/runner/test-runner", () => { await run_({ runner }).catch(() => {}); - assert.calledOnce(browser.markAsBroken); + assert.calledOnceWith(browser.markAsBroken, { stubBrowserCommands: true }); }); }); @@ -616,7 +616,7 @@ describe("worker/runner/test-runner", () => { await run_({ runner }).catch(() => {}); - assert.calledOnce(browser.markAsBroken); + assert.calledOnceWith(browser.markAsBroken, { stubBrowserCommands: true }); }); }); @@ -632,7 +632,7 @@ describe("worker/runner/test-runner", () => { await run_({ runner }).catch(() => {}); - assert.calledOnce(browser.markAsBroken); + assert.calledOnceWith(browser.markAsBroken, { stubBrowserCommands: true }); }); }); @@ -655,7 +655,7 @@ describe("worker/runner/test-runner", () => { await run_({ runner }).catch(() => {}); - assert.calledOnce(browser.markAsBroken); + assert.calledOnceWith(browser.markAsBroken, { stubBrowserCommands: true }); }); }); });