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:
Hugo Häggmark
2019-12-09 00:14:25 -08:00
committed by GitHub
parent 10d36b282b
commit 58cffde0f2
91 changed files with 1955 additions and 95 deletions
@@ -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
});
};