Files
cypress/npm/webpack-dev-server
Adam Stone-Lord 4c11731ee1 chore: optimize task execution (#27848)
* Revert "chore: simplify build script (#27547)"

This reverts commit 0a86ec686e.

* Revert "chore: upgrade lerna to 6, cache build step (#26913)"

This reverts commit 9e60aeba8f.

* [run ci]

* chore: upgrade lerna to 6, cache build step (#26913)

* chore: update build-npm-modules script

* chore: update build-npm-modules script

* chore: update build-npm-modules script

* chore: update build-npm-modules script

* chore: update lerna to 6

* [run ci]

* try caching build step

* we can't clean without building after

* add dependencies on scripts for npm packages

* update commands

* add config for data-context build step

* fix output configurations for npm packages, add gitignores

* revert changes to config and data-context build steps

* fix outputs

* run with cache

* fix outputs for cli

* actually fix outputs

* test with cache

---------

Co-authored-by: astone123 <adams@cypress.io>

* chore: simplify build script (#27547)

* chore: simplify build script

* update CI workflows

* fix workflows

* empty commit because Percy weirdness

* chore: add driver, reporter, config as implicit dependencies for runner package (#27559)

* run all workflows on branch

* chore: parallelize test-binary-against-recipes CI step (#27570)

* chore: fix some easy circular dependencies in dep graph (#27612)

* chore: remove gulp tasks from postinstall (#27616)

* empty commit

* chore: minor improvements to node_modules_install (#27647)

* chore: fix cypress:open and dev scripts

* run with cache [run ci]

* exclude mochaawesome assets from .yarnclean [run ci]

* bump cache again [run ci]

* run cached [run ci]

* chore: do not cache cli build step [run ci]

* update workflow command and docs for build-cli [run ci]

* fix commands that use scope [run ci]

* use different branch for publish repo [run ci]

* percy weirdness? [run ci]

* fix postbuild cli script [run ci]

* try to remove typescript from production binary [run ci]

* fix circular dependency [run ci]

* try removing ts from node_modules [run ci]

* remove typescript resolution [run ci]

* remove redundant target scripts

* update to lerna scoped commands

* remove unneeded yarn in lerna command

* try to fix Electron install in Windows workflow

---------

Co-authored-by: Jordan <jordan@jpdesigning.com>
Co-authored-by: Dave Kasper <dave.m.kasper@gmail.com>
2023-10-04 12:25:00 -05:00
..
2023-08-28 22:27:42 -05:00

@cypress/webpack-dev-server

Implements the APIs for the object-syntax of the Cypress Component-testing "webpack dev server".

Note: This package is bundled with the Cypress binary and should not need to be installed separately. See the Component Framework Configuration Docs for setting up component testing with webpack. The devServer function signature is for advanced use-cases.

Object API:

import { defineConfig } from 'cypress'

export default defineConfig({
  component: {
    devServer: {
      framework: 'create-react-app',
      bundler: 'webpack',
      // webpackConfig?: Will try to infer, if passed it will be used as is
    }
  }
})

Function API:

import { devServer } from '@cypress/webpack-dev-server'
import { defineConfig } from 'cypress'

export default defineConfig({
  component: {
    devServer(devServerConfig) {
      return devServer({
        ...devServerConfig,
        framework: 'create-react-app',
        webpackConfig: require('./webpack.config.js')
      })
    }
  }
})

Testing

Unit tests can be run with yarn test. Integration tests can be run with yarn cypress:run

This module should be primarily covered by system-tests / open-mode tests. All system-tests directories should be created using the notation:

webpack${major}_wds${devServerMajor}-$framework{-$variant}

  • webpack4_wds3-react
  • webpack4_wds4-next-11
  • webpack5_wds3-next-12
  • webpack4_wds4-create-react-app

Architecture

There should be a single publicly-exported entrypoint for the module, devServer, all other types and functions should be considered internal/implementation details, and types stripped from the output.

The devServer will first source the modules from the user's project, falling back to our own bundled versions of libraries. This ensures that the user has installed the current modules, and throws an error if the user does not have the library installed.

From there, we check the "framework" field to source or define any known webpack transforms to aid in the compilation.

We then merge the sourced config with the user's webpack config, and layer on our own transforms, and provide this to a webpack instance. The webpack instance used to create a webpack-dev-server, which is returned.

Compatibility

@cypress/webpack-dev-server cypress
<= v1 <= v9
>= v2 >= v10
>= v4 >= v13

License

license

This project is licensed under the terms of the MIT license.

Changelog