// 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;