1
0
Fork 0
mirror of https://github.com/datashard/snapshot.git synced 2025-05-16 04:07:21 +00:00

Compare commits

...

44 commits

Author SHA1 Message Date
Renovate Bot
6d01fdda57 fix(deps): update dependency @wildpeaks/snapshot-dom to v1.4.0 2019-12-22 01:05:28 +00:00
Renovate Bot
b65b13f8b6 chore(deps): update dependency semantic-release to v15.14.0 2019-12-22 00:09:08 +00:00
Renovate Bot
9d3211a8b0 chore(deps): update dependency mocha to v6.2.2 2019-12-21 23:08:26 +00:00
Renovate Bot
0a14849823 fix(deps): update dependency js-beautify to v1.10.2 2019-12-21 22:08:43 +00:00
Renovate Bot
28462fc9e9 chore(deps): update dependency semantic-release to v15.13.32 2019-12-21 21:05:36 +00:00
Renovate Bot
bdad90afd5 chore(deps): update dependency cypress to v3.8.0 2019-12-21 20:49:33 +00:00
Renovate Bot
0a6277cee8 chore(deps): lock file maintenance 2019-06-10 05:15:31 +00:00
Renovate Bot
9a34a0b643 chore(deps): lock file maintenance 2019-06-03 05:12:13 +00:00
Renovate Bot
8d5e82d1b6 chore(deps): lock file maintenance 2019-05-27 05:09:57 +00:00
Renovate Bot
d0b1084f98 chore(deps): update dependency cypress to v3.3.1 2019-05-25 06:09:55 +00:00
renovate[bot]
0b5a37487a chore(deps): update dependency mocha to v6 () 2019-05-20 11:31:52 -04:00
Renovate Bot
bc08a1d270 chore(deps): lock file maintenance 2019-05-20 05:18:44 +00:00
Renovate Bot
cc5c9a9fd4 chore(deps): update dependency cypress to v3.3.0 2019-05-18 05:14:36 +00:00
Renovate Bot
c1a21de66d chore(deps): lock file maintenance 2019-05-13 06:08:37 +00:00
Renovate Bot
1bc9013b0c chore(deps): lock file maintenance 2019-05-13 05:11:42 +00:00
Renovate Bot
bd560d6af9 fix(deps): update dependency snap-shot-compare to v2.8.3 2019-05-11 12:11:13 +00:00
Renovate Bot
7c8658d0ef fix(deps): update dependency snap-shot-compare to v2.8.2 2019-05-11 06:10:45 +00:00
Renovate Bot
ac9a2afb49 chore(deps): update dependency semantic-release to v15.13.12 2019-05-11 05:05:31 +00:00
Renovate Bot
40f062389c chore(deps): lock file maintenance 2019-05-06 05:09:18 +00:00
Renovate Bot
fb4d9fe89a fix(deps): update dependency js-beautify to v1.10.0 2019-05-04 05:12:26 +00:00
Gleb Bahmutov
c836e5531e
add links to a few other snapshots plugins 2019-04-30 17:34:18 -04:00
renovate[bot]
9fdc5ec16f chore(deps): update dependency cypress to v3 () 2019-04-30 12:02:29 -04:00
renovate[bot]
89000de57f chore(deps): update dependency cypress to v2 () 2019-04-30 11:27:36 -04:00
Gleb Bahmutov
4c35f7e2bf chore: remove github-post-release 2019-04-30 11:14:14 -04:00
Gleb Bahmutov
ad1ed62a71 chore: remove pre-git to avoid clashing with release 2019-04-30 11:02:02 -04:00
Renovate Bot
4481828479 chore(deps): pin dependency semantic-release to 15.13.3 2019-04-30 14:57:29 +00:00
Gleb Bahmutov
140f94d1b0 chore: update semantic release 2019-04-30 10:51:27 -04:00
Renovate Bot
9e863c08a4 chore(deps): lock file maintenance 2019-04-29 05:13:13 +00:00
Renovate Bot
c8e3ee89c1 fix(deps): update dependency js-beautify to v1.9.1 2019-04-27 15:05:30 +00:00
Renovate Bot
f927fb13fe chore(deps): update dependency pre-git to v3.17.1 2019-04-27 14:13:15 +00:00
Renovate Bot
41f76f29e5 chore(deps): update dependency mocha to v4.1.0 2019-04-27 13:07:59 +00:00
Renovate Bot
c7e36ef39b chore(deps): update dependency eslint to v4.19.1 2019-04-27 12:13:19 +00:00
Renovate Bot
a743cfbccc chore(deps): update dependency deps-ok to v1.4.1 2019-04-27 11:13:50 +00:00
Renovate Bot
7ac7e096a7 chore(deps): update dependency dependency-check to v2.10.1 2019-04-27 10:09:16 +00:00
Renovate Bot
7e3141f6dc chore(deps): update dependency debug to v3.2.6 2019-04-27 09:11:26 +00:00
Renovate Bot
ce7a6569b9 chore(deps): update dependency cypress to v1.4.2 2019-04-27 08:13:26 +00:00
Renovate Bot
6340cc2f6f chore(deps): update dependency eslint to v4.13.1 2019-04-27 07:09:24 +00:00
Renovate Bot
34c503323b chore(deps): update dependency deps-ok to v1.2.4 2019-04-27 06:05:42 +00:00
Renovate Bot
cc47c50650 chore(deps): update dependency dependency-check to v2.9.2 2019-04-27 05:07:33 +00:00
Stuart Long
f2f7d76d75 feat: add support for relative snapshots ()
* feat: Add capability for relative snapshot files

* feat: remove path from package

* feat: remove nsp from pre-push since it's deprecated

* feat: use Cypress config instead

* feat: fix build
2019-04-26 16:38:33 -04:00
Gleb Bahmutov
a68d97bb76
Merge pull request from stuartlong/stuartlo/add-update-instructions
feat(log): Add instructions about updating snapshot to error message
2019-04-26 16:28:19 -04:00
Gleb Bahmutov
ac3afd73b2
Merge pull request from cypress-io/renovate/pin-dependencies
chore(deps): pin dependency semantic-release to 8.2.3
2019-04-26 10:33:10 -04:00
Renovate Bot
21941f89c7
chore(deps): pin dependency semantic-release to 8.2.3 2019-04-26 14:20:30 +00:00
stuartlo
a7f44204b3 feat(log): Add instructions about udpating snapshot to error message 2019-04-09 13:33:46 -07:00
4 changed files with 6926 additions and 3403 deletions

View file

@ -8,6 +8,10 @@
[![semantic-release][semantic-image] ][semantic-url]
[![renovate-app badge][renovate-badge]][renovate-app]
## Note
Please take a look at a few other Cypress snapshot plugins: [cypress-plugin-snapshots](https://github.com/meinaart/cypress-plugin-snapshots), [cypress-image-snapshot](https://github.com/palmerhq/cypress-image-snapshot).
## Install
Requires [Node](https://nodejs.org/en/) version 6 or above.
@ -48,7 +52,7 @@ describe('focused input field', () => {
})
```
The snapshot object can be found in file `snapshots.js`. In the above case it would look something like this
By default, the snapshot object can be found in file `snapshots.js`. In the above case it would look something like this
```js
module.exports = {
@ -103,6 +107,23 @@ cy.get(...).snapshot({
})
```
### Configuration
This module provides some configuration options:
#### useRelativeSnapshots
Set to true in order to store your snapshots for each test run next to the inital test caller rather
than at the base working directory.
**Note:** requires the `readFileMaybe` plugin to be configured see https://on.cypress.io/task#Read-a-file-that-might-not-exist
#### snapshotFileName
Set to a string to name your snapshot something other than 'snapshots.js'
#### Usage
Set the configuration options as part of the Cypress config.
See https://docs.cypress.io/guides/references/configuration.html
## Debugging
To debug this module run with environment variable `DEBUG=@cypress/snapshot`

10208
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -4,26 +4,6 @@
"version": "0.0.0-development",
"author": "Gleb Bahmutov <gleb@cypress.io>",
"bugs": "https://github.com/cypress-io/snapshot/issues",
"config": {
"pre-git": {
"commit-msg": "simple",
"pre-commit": [
"npm prune",
"npm run deps",
"npm test",
"git add src/*.js",
"npm run ban"
],
"pre-push": [
"npm run unused-deps",
"npm run license",
"npm run ban -- --all",
"npm run size"
],
"post-commit": [],
"post-merge": []
}
},
"engines": {
"node": ">=6"
},
@ -62,37 +42,31 @@
"unit": "mocha src/*-spec.js",
"unused-deps": "dependency-check --unused --no-dev . --entry src/add-initial-snapshot-file.js",
"postinstall": "node src/add-initial-snapshot-file.js",
"semantic-release": "semantic-release pre && npm publish --access public && semantic-release post",
"semantic-release": "semantic-release",
"cypress:open": "cypress open",
"cypress:run": "cypress run"
},
"release": {
"analyzeCommits": "simple-commit-message",
"generateNotes": "github-post-release"
},
"devDependencies": {
"ban-sensitive-files": "1.9.2",
"cypress": "1.1.4",
"debug": "3.1.0",
"dependency-check": "2.9.1",
"deps-ok": "1.2.1",
"eslint": "4.13.0",
"cypress": "3.8.0",
"debug": "3.2.6",
"dependency-check": "2.10.1",
"deps-ok": "1.4.1",
"eslint": "4.19.1",
"eslint-plugin-cypress-dev": "1.1.2",
"git-issues": "1.3.1",
"github-post-release": "1.13.1",
"license-checker": "15.0.0",
"mocha": "4.0.1",
"pre-git": "3.16.0",
"semantic-release": "^8.2.0"
"mocha": "6.2.2",
"semantic-release": "15.14.0"
},
"dependencies": {
"@wildpeaks/snapshot-dom": "1.2.1",
"@wildpeaks/snapshot-dom": "1.4.0",
"am-i-a-dependency": "1.1.2",
"check-more-types": "2.24.0",
"its-name": "1.0.0",
"js-beautify": "1.7.5",
"js-beautify": "1.10.2",
"lazy-ass": "1.6.0",
"snap-shot-compare": "2.7.1",
"snap-shot-compare": "2.8.3",
"snap-shot-store": "1.2.3"
}
}

View file

@ -6,6 +6,7 @@ const { initStore } = require('snap-shot-store')
const la = require('lazy-ass')
const is = require('check-more-types')
const compare = require('snap-shot-compare')
const path = require('path')
const {
serializeDomElement,
@ -14,6 +15,14 @@ const {
countSnapshots
} = require('./utils')
const DEFAULT_CONFIG_OPTIONS = {
// using relative snapshots requires a simple
// 'readFileMaybe' plugin to be configured
// see https://on.cypress.io/task#Read-a-file-that-might-not-exist
useRelativeSnapshots: false,
snapshotFileName: 'snapshots.js'
}
/* eslint-disable no-console */
function compareValues ({ expected, value }) {
@ -27,6 +36,12 @@ function registerCypressSnapshot () {
la(is.fn(global.after), 'missing global after function')
la(is.object(global.Cypress), 'missing Cypress object')
const useRelative = Cypress.config('useRelativeSnapshots')
const config = {
useRelativeSnapshots: useRelative === undefined ? DEFAULT_CONFIG_OPTIONS.useRelativeSnapshots : useRelative,
snapshotFileName: Cypress.config('snapshotFileName') || DEFAULT_CONFIG_OPTIONS.snapshotFileName
}
console.log('registering @cypress/snapshot')
let storeSnapshot
@ -48,7 +63,15 @@ function registerCypressSnapshot () {
return counters[key]
}
const SNAPSHOT_FILENAME = 'snapshots.js'
let snapshotFileName = config.snapshotFileName
if (config.useRelativeSnapshots) {
let relative = Cypress.spec.relative
if (Cypress.platform === 'win32') {
relative = relative.replace(/\\/g, path.sep)
}
snapshotFileName = path.join(path.dirname(relative), config.snapshotFileName)
}
function evaluateLoadedSnapShots (js) {
la(is.string(js), 'expected JavaScript snapshot source', js)
@ -59,9 +82,24 @@ function registerCypressSnapshot () {
}
global.before(function loadSnapshots () {
cy
.readFile(SNAPSHOT_FILENAME, 'utf-8', { log: false })
.then(evaluateLoadedSnapShots)
let readFile
if (config.useRelativeSnapshots) {
readFile = cy
.task('readFileMaybe', snapshotFileName)
.then(function (contents) {
if (!contents) {
return cy.writeFile(snapshotFileName, '', 'utf-8', { log: false })
}
return contents
})
} else {
readFile = cy
.readFile(snapshotFileName, 'utf-8')
}
readFile.then(evaluateLoadedSnapShots)
// no way to catch an error yet
})
@ -120,7 +158,7 @@ function registerCypressSnapshot () {
devToolsLog.expected = expected
delete devToolsLog.value
devToolsLog.value = value
throw new Error(`Snapshot difference\n${json.message}`)
throw new Error(`Snapshot difference. To update, delete snapshot and rerun test.\n${json.message}`)
})
}
@ -161,7 +199,7 @@ function registerCypressSnapshot () {
snapshots.__version = Cypress.version
const s = JSON.stringify(snapshots, null, 2)
const str = `module.exports = ${s}\n`
cy.writeFile(SNAPSHOT_FILENAME, str, 'utf-8', { log: false })
cy.writeFile(snapshotFileName, str, 'utf-8', { log: false })
}
})