// 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 del from "del"; 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, }), ], }; on( "file:preprocessor", webpackPreprocessor({ typescript: require.resolve("typescript"), webpackOptions, }) ); on("after:spec", async (spec, results) => { if (!results.video) { return; } // Do we have failures for any retry attempts? const failures = results.tests.some(({ attempts }) => attempts.some(({ state }) => state === "failed") ); // Delete the video if the spec passed and no tests were retried. if (!failures) { await del(results.video); } }); }; export default configurePlugins;