keycloak-scim/cypress/plugins/index.ts
2021-12-06 11:50:29 +01:00

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;