Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions packages/driver/cypress/integration/cypress/screenshot_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const { Screenshot } = Cypress
const DEFAULTS = {
capture: 'fullPage',
scale: false,
overwrite: false,
disableTimersAndAnimations: true,
screenshotOnRunFailure: true,
blackout: [],
Expand Down Expand Up @@ -64,6 +65,14 @@ describe('src/cypress/screenshot', () => {
expect(Screenshot.getConfig().scale).to.equal(true)
})

it('sets overwrite if specified', () => {
Screenshot.defaults({
overwrite: true,
})

expect(Screenshot.getConfig().overwrite).to.equal(true)
})

it('sets disableTimersAndAnimations if specified', () => {
Screenshot.defaults({
disableTimersAndAnimations: false,
Expand Down Expand Up @@ -187,6 +196,20 @@ describe('src/cypress/screenshot', () => {
.and.eq('https://on.cypress.io/screenshot-api')
})

it('throws if overwrite is not a boolean', () => {
const fn = () => {
Screenshot.defaults({ overwrite: 'foo' })
}

expect(fn).to.throw()
.with.property('message')
.and.include('`Cypress.Screenshot.defaults()` `overwrite` option must be a boolean. You passed: `foo`')

expect(fn).to.throw()
.with.property('docsUrl')
.and.eq('https://on.cypress.io/screenshot-api')
})

it('throws if disableTimersAndAnimations is not a boolean', () => {
const fn = () => {
Screenshot.defaults({ disableTimersAndAnimations: 'foo' })
Expand Down
1 change: 1 addition & 0 deletions packages/driver/src/cypress/screenshot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const _reset = () => {
disableTimersAndAnimations: true,
screenshotOnRunFailure: true,
blackout: [],
overwrite: false,
onBeforeScreenshot () {},
onAfterScreenshot () {},
}
Expand Down
4 changes: 3 additions & 1 deletion packages/runner/__snapshots__/retries.mochaEvents.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -6476,6 +6476,7 @@ exports['src/cypress/runner retries mochaEvents screenshots retry screenshot in
"height": 660
},
"scaled": false,
"overwrite": false,
"blackout": [],
"startTime": "match.string",
"current": 1,
Expand All @@ -6491,7 +6492,8 @@ exports['src/cypress/runner retries mochaEvents screenshots retry screenshot in
"scale": false,
"waitForCommandSynchronization": false,
"disableTimersAndAnimations": true,
"blackout": []
"blackout": [],
"overwrite": false
}

exports['serialize state - retries'] = {
Expand Down
1 change: 1 addition & 0 deletions packages/runner/__snapshots__/runner.mochaEvents.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -1939,6 +1939,7 @@ exports['src/cypress/runner other specs screenshots screenshot after failed test
"height": 660
},
"scaled": true,
"overwrite": false,
"blackout": [],
"startTime": "1970-01-01T00:00:00.000Z"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,39 @@ describe('taking screenshots', () => {
})
})

// @see https://github.com/cypress-io/cypress/issues/7955
it('can set overwrite default option to replace existing filename', () => {
Cypress.Screenshot.defaults({
overwrite: true,
})

cy.viewport(600, 200)
cy.visit('http://localhost:3322/color/yellow')
cy.screenshot('overwrite-test', {
clip: { x: 10, y: 10, width: 160, height: 80 },
})

cy.task('check:screenshot:size', {
name: `${path.basename(__filename)}/overwrite-test.png`,
width: 160,
height: 80,
devicePixelRatio,
})

cy.screenshot('overwrite-test', {
clip: { x: 10, y: 10, width: 100, height: 50 },
})

cy.readFile(`cypress/screenshots/${path.basename(__filename)}/overwrite-test (1).png`).should('not.exist')

cy.task('check:screenshot:size', {
name: `${path.basename(__filename)}/overwrite-test.png`,
width: 100,
height: 50,
devicePixelRatio,
})
})

context('before hooks', () => {
before(() => {
// failure 2
Expand Down