Files
cypress/npm/create-cypress-tests/src/component-testing/templates/react/reactWebpackFile.ts
T
Dmitriy Kovalenko fc30118252 feat(@cypress/react): Make correct plugins for different adapters/bundlers (#15337)
* Remove unused stuff

* Fix eslint errors

* Use local cypress running script

* Fix dependency resolution

* Revert "Fix dependency resolution"

This reverts commit 01a70be211.

* Add @cypress/react CI

* Properly resolve @types pacakges

* Run tests with mocha

* Fix cypress tests

* Fix or skip some specs

* Add retries to the card-spec.js

* Remove jest mocks

* Run e2e examples on CI

* Fix yarn cache key

* Fix e2e examples jobs

* Rename cypress-react-unit-test with @cypress/react

* Fix circleci.yml

* Revert "Fix e2e examples jobs"

This reverts commit efcc7c4d19.

* Revert " Rename cypress-react-unit-test with @cypress/react"

This reverts commit 4febfcc82b.

* Replce cypress-react-unit-test with @cypress/react

* Persist build artifacts

* Fix working directory paths circle.yml

* Fix more CI

* adding yarn.lock files

* Make package.json for  folder

* Remove .npmrc

* Update circle.yml

* Remove unused files

* Copy plugins files to the "dist" folder

* Fix links to the github repos

* Move init wizard from npm/react/init to npm/wizard

* Move init wizard from npm/react/init to npm/wizard

* Implement initial vue template

* Run wizard tests on CI

* Refactor continue: bool to success: bool for better code readability

* Fix circleci.yml

* Use only absolute paths for tests

* Stub process.exit calls

* Remove useless comments

* Add installation cypress to the wizard logic

* More improvements

* Include packages/examples/cypress into git

* Commit new files

* Use packages/example as SST for generated files

* Last improvements for wizard

* Update packages/server/lib/scaffold.js

* Rename wizard to create-cypress-tests

* Fix circleci config

* Fix snapshot tests

* Run all create-cypress-tests on ci

* Do not install plugins and scaffold files from kitchensink

* Ignore integration/examples folder for packages/example

* Run create-cypress-tests-tests on CI

* Add copy example cross-platform script

* Use copy example script in tests

* feat: create-cypress-tests auto-inject config (#9116)

* Implement the basic babel code transformation for configs

* Add more tests for edge-cases

* Add snapshot tests for autogenerated code for each template

* Add git status guard

* Add git status guard

* Fix last test

* Fix tests

* Revert changes for packages/example

* Revert changes for packages/example/tsconfig.json

* Prepeare package for the release

* Fix inquirer name

* v0.0.125

* v0.0.127

* v0.0.128

* v0.0.130

* v0.0.131

* Add more UX features

* Add vue-cli template

* Make src as default folder for vue-cli template

* Revert dev-time changes

* Run appveyour windows build

* Run full appveyour build

* Fix circle.yml

* Update plugins

* Join paths for windows

* Revert example/lib changes

* Fix tests

* Revert unnecessary changes

* Implement dev-server dependency installation

* Update npm/create-cypress-tests/README.md

* Properly exit process if react tests failed

* Fix circleci reporter not found

* Update nextjs plugin

* react-scripts plugin for dev-server

* Implement webpack-file plugin support

* v0.0.502

* v0.0.503

* Implement rollup support

* Implement babel plugin

* Update webpack options

* Fix nextjs plugin

* Unmount components in beforeEach to prevent side-effects

* Rename preprocessor to injectDevServer

* Fix next.js example

* Fix webpack-options exampel

* Reproduce rollup problem

* Update create-cypress-tests snapshots

* Do not run examples/rollup

* Uncomment test

* Change paralllelism

* Remove useless checks

* Update snapshots

Co-authored-by: Jessica Sachs <jess@jessicasachs.io>
2021-03-05 18:16:22 +02:00

43 lines
1.5 KiB
TypeScript

import * as babel from '@babel/core'
import path from 'path'
import { Template } from '../Template'
import { findWebpackConfig } from '../templateUtils'
export const WebpackTemplate: Template<{ webpackConfigPath: string }> = {
message:
'It looks like you have custom `webpack.config.js`. We can use it to bundle the components for testing.',
getExampleUrl: () => {
return 'https://github.com/cypress-io/cypress/tree/develop/npm/react/examples/webpack-file'
},
recommendedComponentFolder: 'cypress/component',
dependencies: ['@cypress/webpack-dev-server'],
getPluginsCodeAst: (payload, { cypressProjectRoot }) => {
const includeWarnComment = !payload
const webpackConfigPath = payload
? path.relative(cypressProjectRoot, payload.webpackConfigPath)
: './webpack.config.js'
return {
Require: babel.template.ast('const injectDevServer = require("@cypress/react/plugins/load-webpack")'),
ModuleExportsBody: babel.template.ast([
includeWarnComment
? '// TODO replace with valid webpack config path'
: '',
`config.env.webpackFilename = '${webpackConfigPath}'`,
'injectDevServer(on, config)',
'return config // IMPORTANT to return the config object',
].join('\n'), { preserveComments: true }),
}
},
test: (root) => {
const webpackConfigPath = findWebpackConfig(root)
return webpackConfigPath ? {
success: true,
payload: { webpackConfigPath },
} : {
success: false,
}
},
}