J'ai mis à jour Cypress depuis 3.0.3
à 3.1.3
. J'utilise des modules d'import/export ES6 qui doivent fonctionner en relation avec les documents. Mais je reçois une ligne avec undefined
dans le terminal et l'erreur suivante dans l'interface graphique:
<root_dir>/node_modules/@babel/runtime/helpers/esm/defineProperty.js:1
export default function _defineProperty(obj, key, value) {
^
ParseError: 'import' and 'export' may appear only with 'sourceType: module'
Mes tests sont en Vanilla JS, pas de TS os CoffeeScript. Je suis coincé, dans 3.0.3
ça a bien fonctionné.
Au cas où des gens viendraient ici pour le message ...
ParseError: 'import' et 'export' peuvent apparaître uniquement avec 'sourceType: module'
... dans un projet Cypress TypeScript. Voici la réponse:
Cypress prend en charge TypeScript prêt à l'emploi, tant que vous disposez d'un tsconfig.json
fichier. Cependant, les importations ne fonctionnent que si vous prétraitez vos fichiers TypeScript.
Voici les étapes:
yarn add -D webpack
yarn add -D ts-loader
yarn add -D @cypress/webpack-preprocessor
Maintenant, assurez-vous d'avoir ces 3 fichiers, tsconfig.json
, webpack.config.js
et plugins/index.js
sur votre dossier Cypress.
plugins/index.js
:
const wp = require("@cypress/webpack-preprocessor");
module.exports = on => {
const options = {
webpackOptions: require("../webpack.config.js")
};
on("file:preprocessor", wp(options));
};
tsconfig.json
:
{
"compilerOptions": {
"strict": true,
"target": "es5",
"lib": ["es5", "dom"],
"types": ["cypress"]
},
"include": [
"**/*.ts"
]
}
webpack.config.js
:
module.exports = {
mode: 'development',
resolve: {
extensions: ['.ts', '.js']
},
module: {
rules: [
{
test: /\.ts$/,
exclude: [/node_modules/],
use: [
{
loader: 'ts-loader',
options: {
// skip typechecking for speed
transpileOnly: true
}
}
]
}
]
}
}
Ça devrait juste marcher maintenant.
Il existe un échantillon officiel sur github disponible à cette adresse https://github.com/cypress-io/cypress-example-recipes/tree/master/examples/preprocessors__TypeScript-webpack
Remarque: si vous êtes sur les fenêtres et que vous voulez exécuter localement le projet , mettez d'abord à jour le chemin dans le package.json.
// D:\path\cypress-example-recipes\examples\preprocessors__TypeScript-webpack\package.json
{
"name": "cypress-example-TypeScript-webpack",
"version": "1.0.0",
"description": "Example showing TypeScript tests with Cypress",
"scripts": {
// ...
"cypress:open": "..\\..\\node_modules\\.bin\\cypress open"
}
}