# Cypress Testing
App Config has a Cypress.io plugin available.
Install:
yarn add -D @app-config/cypress
Add to ./cypress/support/index.js
:
require('@app-config/cypress').register();
In your integration tests:
// this import will import the types for setAppConfig!
import '@app-config/cypress';
describe('Config Loading', () => {
it('should mock the configuration value', () => {
cy.setAppConfig({
foo: 'https://overwritten.com',
bar: 'some configuration value',
});
// be sure to setAppConfig before calling visit()
cy.visit('/');
});
});
# Using Config in Tests
Use the Webpack Preprocessor (opens new window) with the App Config Plugin (opens new window).
Cypress only allows one preprocessor at once, so we can't provide a preprocessor to do this.
Example ./cypress/plugins/index.js
:
const webpackPreprocessor = require('@cypress/webpack-preprocessor');
const { default: AppConfigPlugin } = require('@app-config/webpack');
module.exports = (on) => {
const options = {
webpackOptions: {
mode: 'development',
module: {
rules: [
{ test: AppConfigPlugin.regex, use: { loader: AppConfigPlugin.loader } },
{
test: /\.jsx?$/,
exclude: [/node_modules/],
use: [
{
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
],
},
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/,
},
],
},
plugins: [new AppConfigPlugin()],
},
};
on('file:preprocessor', webpackPreprocessor(options));
};
This allows you to use @app-config/main
imports in your tests, hassle free.