mirror of
https://github.com/grafana/grafana.git
synced 2024-11-30 04:34:23 -06:00
3fdf96d241
consolidate e2e scripts in package.json + almost fix benchmarking tests
85 lines
3.1 KiB
JavaScript
85 lines
3.1 KiB
JavaScript
const { defineConfig } = require('cypress');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const benchmarkPlugin = require('./e2e/cypress/plugins/benchmark/index');
|
|
const compareScreenshots = require('./e2e/cypress/plugins/compareScreenshots');
|
|
const readProvisions = require('./e2e/cypress/plugins/readProvisions');
|
|
const typescriptPreprocessor = require('./e2e/cypress/plugins/typescriptPreprocessor');
|
|
|
|
module.exports = defineConfig({
|
|
projectId: 'zb7k1c',
|
|
videoCompression: 20,
|
|
viewportWidth: 1920,
|
|
viewportHeight: 1080,
|
|
|
|
e2e: {
|
|
supportFile: './e2e/cypress/support/e2e.js',
|
|
setupNodeEvents(on, config) {
|
|
on('file:preprocessor', typescriptPreprocessor);
|
|
on('task', {
|
|
log({ message, optional }) {
|
|
optional ? console.log(message, optional) : console.log(message);
|
|
return null;
|
|
},
|
|
});
|
|
|
|
if (config.env['BENCHMARK_PLUGIN_ENABLED'] === true) {
|
|
benchmarkPlugin.initialize(on, config);
|
|
}
|
|
|
|
on('task', {
|
|
compareScreenshots,
|
|
readProvisions: (filePaths) => readProvisions({ CWD: process.cwd(), filePaths }),
|
|
});
|
|
|
|
on('task', {
|
|
getJSONFilesFromDir: async ({ relativePath }) => {
|
|
// CWD is set for plugins in the cli but not for the main grafana repo: https://github.com/grafana/grafana/blob/main/packages/grafana-e2e/cli.js#L12
|
|
const projectPath = config.env.CWD || config.fileServerFolder || process.cwd();
|
|
const directoryPath = path.join(projectPath, relativePath);
|
|
const jsonFiles = fs.readdirSync(directoryPath);
|
|
return jsonFiles
|
|
.filter((fileName) => /.json$/i.test(fileName))
|
|
.map((fileName) => {
|
|
const fileBuffer = fs.readFileSync(path.join(directoryPath, fileName));
|
|
return JSON.parse(fileBuffer);
|
|
});
|
|
},
|
|
});
|
|
|
|
on('before:browser:launch', (browser = {}, launchOptions) => {
|
|
console.log('launching browser %s is headless? %s', browser.name, browser.isHeadless);
|
|
|
|
// the browser width and height we want to get
|
|
// our screenshots and videos will be of that resolution
|
|
const width = 1920;
|
|
const height = 1080;
|
|
|
|
console.log('setting the browser window size to %d x %d', width, height);
|
|
|
|
if (browser.name === 'chrome' && browser.isHeadless) {
|
|
launchOptions.args.push(`--window-size=${width},${height}`);
|
|
|
|
// force screen to be non-retina and just use our given resolution
|
|
launchOptions.args.push('--force-device-scale-factor=1');
|
|
}
|
|
|
|
if (browser.name === 'electron' && browser.isHeadless) {
|
|
// might not work on CI for some reason
|
|
launchOptions.preferences.width = width;
|
|
launchOptions.preferences.height = height;
|
|
}
|
|
|
|
if (browser.name === 'firefox' && browser.isHeadless) {
|
|
launchOptions.args.push(`--width=${width}`);
|
|
launchOptions.args.push(`--height=${height}`);
|
|
}
|
|
|
|
// IMPORTANT: return the updated browser launch options
|
|
return launchOptions;
|
|
});
|
|
},
|
|
},
|
|
});
|