55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
// The Webpack preprocessor does not include any types so it will have to be ignored.
|
|
// @ts-ignore
|
|
import webpackPreprocessor from "@cypress/webpack-batteries-included-preprocessor";
|
|
import ForkTsCheckerWebpackPlugin from "fork-ts-checker-webpack-plugin";
|
|
import path from "path";
|
|
|
|
// ***********************************************************
|
|
// This example plugins/index.js can be used to load plugins
|
|
//
|
|
// You can change the location of this file or turn off loading
|
|
// the plugins file with the 'pluginsFile' configuration option.
|
|
//
|
|
// You can read more here:
|
|
// https://on.cypress.io/plugins-guide
|
|
// ***********************************************************
|
|
|
|
// This function is called when a project is opened or re-opened (e.g. due to
|
|
// the project's config changing)
|
|
|
|
const configurePlugins: Cypress.PluginConfig = (on) => {
|
|
const defaultOptions = webpackPreprocessor.defaultOptions.webpackOptions;
|
|
const webpackOptions = {
|
|
...defaultOptions,
|
|
context: path.resolve(__dirname, ".."),
|
|
plugins: [
|
|
new ForkTsCheckerWebpackPlugin({
|
|
async: false,
|
|
}),
|
|
],
|
|
};
|
|
const _ = require("lodash");
|
|
const del = require("del");
|
|
|
|
on(
|
|
"file:preprocessor",
|
|
webpackPreprocessor({
|
|
typescript: require.resolve("typescript"),
|
|
webpackOptions,
|
|
})
|
|
);
|
|
on("after:spec", (spec, results) => {
|
|
if (results?.video) {
|
|
// Do we have failures for any retry attempts?
|
|
const failures = _.some(results.tests, (test: any) => {
|
|
return _.some(test.attempts, { state: "failed" });
|
|
});
|
|
if (!failures) {
|
|
// delete the video if the spec passed and no tests retried
|
|
return del(results.video);
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
export default configurePlugins;
|