diff --git a/packages/driver/src/cy/commands/window.coffee b/packages/driver/src/cy/commands/window.coffee index c6021fd88e..a6e3c1ba32 100644 --- a/packages/driver/src/cy/commands/window.coffee +++ b/packages/driver/src/cy/commands/window.coffee @@ -46,7 +46,7 @@ module.exports = (Commands, Cypress, cy, state, config) -> state(viewport) new Promise (resolve) -> - if currentViewport.viewportWidth is width and currentViewport.viewportHeight + if currentViewport.viewportWidth is width and currentViewport.viewportHeight is height ## noop if viewport won't change return resolve(currentViewport) diff --git a/packages/driver/test/cypress/integration/commands/window_spec.coffee b/packages/driver/test/cypress/integration/commands/window_spec.coffee index 78232842b4..6688a94665 100644 --- a/packages/driver/test/cypress/integration/commands/window_spec.coffee +++ b/packages/driver/test/cypress/integration/commands/window_spec.coffee @@ -457,7 +457,7 @@ describe "src/cy/commands/window", -> Cypress.prependListener("viewport:changed", fn) - cy.viewport(1000, 600).then -> + cy.viewport(1000, 660).then -> Cypress.removeListener("viewport:changed", fn) it "does not trigger 'viewport:changed' when changing to the same viewport", -> @@ -473,6 +473,40 @@ describe "src/cy/commands/window", -> cy.viewport(800, 600).then -> Cypress.removeListener("viewport:changed", fn) + it "triggers 'viewport:changed' if width changes", (done) -> + finished = false + setTimeout -> + if not finished + done("Timed out before 'viewport:changed'") + , 1000 + triggeredOnce = false + cy.on "viewport:changed", (viewport) -> + if triggeredOnce + expect(viewport).to.eql({ viewportWidth: 900, viewportHeight: 600 }) + finished = true + done() + triggeredOnce = true + + cy.viewport(800, 600) + cy.viewport(900, 600) + + it "triggers 'viewport:changed' if height changes", (done) -> + finished = false + setTimeout -> + if not finished + done("Timed out before 'viewport:changed'") + , 1000 + triggeredOnce = false + cy.on "viewport:changed", (viewport) -> + if triggeredOnce + expect(viewport).to.eql({ viewportWidth: 800, viewportHeight: 700 }) + finished = true + done() + triggeredOnce = true + + cy.viewport(800, 600) + cy.viewport(800, 700) + it "sets subject to null", -> cy.viewport("ipad-2").then (subject) -> expect(subject).to.be.null