e2e: Uses Cypress instead of Puppeteer (#20753)
* WIP: intial commit * Tests: Runs e2e tests * Refactor: Adds BASE_URL support * Refactor: Adds namespacing * Refactor: Cleans up the Page api * Build: Adds to build-branches-and-prs job for testing * Build: Hardcoded image for now * Refactor: Uses Selectors in App * Refactor: Adds addDataSource flow * WIP * Refactor: Adds e2eScenario * Refactor: Adds add and delete scenarios * Refactor: Adds logging * Refactor: Adds ability to for Selectors with variables * Refactor: Using variable selectors instead * Refactor: Adds flow until Share Panel * Refactor: Adds clicking on rendered image link * Refactor: Deletes log output * Refactor: Updates snapshots * Chore: Reverts changes * Refactor: Removes log plugin because maybe it breaks yarn build * Refactor: Adds rendered image download * Refactor: Adds image comparison * Refactor: Removes uncaught errors override * Refactor: Changes order of images to compare * Refactor: Updates truth image * Build: Updates path to CI artifacts * Refactor: Cleaning up types and config * wip * Refactor: Cleans up external api * Refactor: More cleanup * Refactor: More cleanup * Refactor: Removes usages of Pages and Flows * Refactor: Removes last traces of Cypress in spec * Refactor: Adds comments
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
const fs = require('fs');
|
||||
const BlinkDiff = require('blink-diff');
|
||||
|
||||
function compareSnapshotsPlugin(args) {
|
||||
args.threshold = args.threshold || 0.001;
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
const diff = new BlinkDiff({
|
||||
imageAPath: args.pathToFileA,
|
||||
imageBPath: args.pathToFileB,
|
||||
thresholdType: BlinkDiff.THRESHOLD_PERCENT,
|
||||
threshold: args.threshold,
|
||||
imageOutputPath: args.pathToFileA.replace('.png', '.diff.png'),
|
||||
});
|
||||
|
||||
diff.run((error, result) => {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
resolve(result);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = compareSnapshotsPlugin;
|
||||
@@ -0,0 +1,26 @@
|
||||
const wp = require('@cypress/webpack-preprocessor');
|
||||
|
||||
const webpackOptions = {
|
||||
resolve: {
|
||||
extensions: ['.ts', '.js']
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.ts$/,
|
||||
exclude: [/node_modules/],
|
||||
use: [
|
||||
{
|
||||
loader: 'ts-loader'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
};
|
||||
|
||||
const options = {
|
||||
webpackOptions
|
||||
};
|
||||
|
||||
module.exports = wp(options);
|
||||
@@ -0,0 +1,15 @@
|
||||
const cypressTypeScriptPreprocessor = require('./cy-ts-preprocessor');
|
||||
const compareSnapshotsPlugin = require('./cy-compare-images');
|
||||
|
||||
module.exports = on => {
|
||||
// yarn build fails with:
|
||||
// >> /Users/hugo/go/src/github.com/grafana/grafana/node_modules/stringmap/stringmap.js:99
|
||||
// >> throw new Error("StringMap expected string key");
|
||||
// on('task', {
|
||||
// failed: require('cypress-failed-log/src/failed')(),
|
||||
// });
|
||||
on('file:preprocessor', cypressTypeScriptPreprocessor);
|
||||
on('task', {
|
||||
compareSnapshotsPlugin
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user