Comments (5)
So basically we can't listen on the same on
events more than once, and often time when we use many plugins together, this would make the internal plugin functions broken. Here is the quick workaround:
// cypress.config.js
// define OnWrapper
const isObject = require('lodash/isObject')
const merge = require('lodash/merge')
class OnWrapper {
constructor(on) {
this.listeners = {}
this.originalOn = on
}
on(event, handler) {
if (event === 'task') return this.originalOn('task', handler)
if (this.listeners[event] === undefined) {
this.listeners[event] = []
}
return this.listeners[event].push(handler)
}
forward() {
Object.entries(this.listeners).forEach(([event, handlers]) => {
this.originalOn(event, async (...args) => {
let result = {}
for (const handler of handlers) {
const res = await handler(...args)
// some `on` events need to return the configuration object
// merge them if we can, otherwise the last one will be returned
result = isObject(res) ? merge(result, res) : res
}
return result
})
})
}
}
// define cypress config
module.exports = defineConfig({
e2e: {
async setupNodeEvents(cypressOn, config) {
const wrapper = new OnWrapper(cypressOn)
wrapper.on("file:preprocessor", () => {
console.log('my file:preprocessor event')
});
await addCucumberPreprocessorPlugin(wrapper.on.bind(wrapper), config);
const cypressImageDiffConfig = getCompareSnapshotsPlugin(wrapper.on.bind(wrapper), config);
// remember to forward all events to the original cypress on
wrapper.forward()
return cypressImageDiffConfig
}
}
});
from cypress-image-diff.
Hi @edme88. It looks like the same Cypress multiple on
events issue as #177
from cypress-image-diff.
Thanks in adcance! I will try to apply this solution 👍
from cypress-image-diff.
This issue is stale because it has been open for 30 days with no activity.
from cypress-image-diff.
This issue was closed because it has been inactive for 30 days since being marked as stale.
from cypress-image-diff.
Related Issues (20)
- Incorrect Difference Percentage Resulting from compareSnapshot Command HOT 6
- v1.31.0 was a breaking change HOT 3
- Add option to not take full size screenshot HOT 5
- Taken screenshots are not the size I configured HOT 10
- Option to run all tests and get diff files at once even if there are failing ones HOT 2
- Custom config file is not working HOT 14
- Cannot find module cypress-image-diff-js/dist/plugin HOT 12
- Error preparing file: cypress/support/e2e.js HOT 8
- Config "FAILURE_THRESHOLD" did not work HOT 5
- Cypress integration broken: The deleteScreenshot 'task' event has not been registered in the setupNodeEvents method. You must register it before using cy.task() HOT 4
- User config error `cypress-image-diff.config.js`
- Missing JSON report when in `cypress OPEN` mode HOT 3
- Unable to update folder locations HOT 5
- Unable to generate JSON REPORT under Folder cypress-image-diff-html-report HOT 1
- Specify shared location/path for Screenshots and Reports HOT 2
- Package subpath './dist/plugin' is not defined by "exports"... HOT 8
- Intermittent Error: ENOENT: no such file or directory, open '/a/b/foo.png'
- Error: ERR_PACKAGE_PATH_NOT_EXPORTED HOT 4
- Trying to test maps but have uggly cut offs. HOT 1
- Component's transform translate changes unexpectedly during screenshot HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cypress-image-diff.