Опишите ошибку Я пытаюсь импортировать внешние пакеты для использования с тестовыми файлами Detox. Мой конкретный случай использования c заключается в том, что testID связан с уникальным ключом, который мне нужно извлечь из базы данных firebase. Я просматривал эти темы, документирующие подобные проблемы, но все решения, которые я пробовал, не работали для меня (большинство ответов были с 2018 года / в начале 2019 года) https://github.com/vuejs/vue-cli/issues/1584 https://github.com/facebook/jest/issues/6933
Существует ли в настоящее время консенсус в отношении наилучшего способа импорта модулей в файл test.spe c. js в стиле e2e, чтобы Detox мог использовать их в тестах?
Воспроизвести
- [x] Я проверил эту проблему в последнем выпуске Detox, и он все еще воспроизводит
Шаги для воспроизведения : 1. добавить базу данных импорта из «@act-native-firebase / database»; в начало тестового файла 2. запустите npx response-native start & 3. запустите npx detox test - c ./e2e/test.spec.js
Конфигурация babel.config. js:
module.exports = {
presets: [
[
'babel-preset-env',
{
targets: {
node: 'current'
}
}
]
]
};
пакет. json:
{
"name": <omitted>,
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
"test": "react-scripts jest",
"lint": "eslint .",
"preinstall": "node scripts/pre-install.js",
"appium": "appium",
"build:android": "scripts/build-android.sh",
"build:ios": "scripts/build-ios.sh",
"test:android": "appium-helper --platform android",
"test:ios": "appium-helper --platform ios",
"test:local-e2e": "OS=both scripts/run-local-tests.sh",
"run-emulator:android": "scripts/run-android-emulator.sh",
"kill-emulator:android": "scripts/kill-android-emulator.sh"
},
"dependencies": {
"@react-native-firebase/app": "^6.0.2",
"@react-native-firebase/auth": "^6.0.2",
"@react-native-firebase/database": "^6.0.2",
"babel-plugin-dynamic-import-node": "^2.3.0",
"detox": "15.1.3",
"geocodio-library-node": "^1.0.0",
"prettier": "^1.19.1",
"react": "16.12.0",
"react-native": "0.61.5",
"react-native-animatable": "^1.3.3",
"react-native-collapsible": "^1.5.1",
"react-native-gesture-handler": "^1.4.1",
"react-native-reanimated": "^1.7.0",
"react-native-screens": "^2.0.0-alpha.27",
"react-native-segmented-control-tab": "^3.4.1",
"react-native-testing-library": "^1.11.1",
"react-navigation": "^4.0.10",
"react-navigation-stack": "1.9.3"
},
"devDependencies": {
"@babel/core": "^7.8.3",
"@babel/runtime": "^7.8.3",
"@react-native-community/eslint-config": "^0.0.6",
"appium": "1.16.0",
"babel-jest": "^25.1.0",
"babel-preset-env": "1.7.0",
"babel-preset-react-native": "4.0.1",
"babel-preset-react-native-stage-0": "1.0.1",
"babel-preset-stage-0": "6.24.1",
"eslint": "^6.5.1",
"jest": "^25.1.0",
"metro-react-native-babel-preset": "^0.58.0",
"prop-types": "15.7.2",
"react-test-renderer": "16.12.0",
"tape-async": "2.3.0",
"tipsi-appium-helper": "3.3.0",
"webdriverio": "5.18.6"
},
"jest": {
"preset": "react-native",
"transformIgnorePatterns": [
"node_modules/(?!((jest-)?react-native|react-navigation|@react-navigation|@react-native-firebase.*))"
],
"transform": {
"^.+\\.js$": "babel-jest"
},
"setupFiles": [
"./node_modules/react-native-gesture-handler/jestSetup.js",
"react-native/jest/setup.js",
"./jest/setup.js"
]
},
"detox": {
"configurations": {...},
"test-runner": "jest"
}
}
Детокс устройства и подробные журналы
● Test suite failed to run
Jest encountered an unexpected token
This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.
By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".
Here's what you can do:
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/en/configuration.html
Details:
.../node_modules/@react-native-firebase/database/lib/index.js:18
import { isBoolean, isNumber, isString } from '@react-native-firebase/app/lib/common';
^^^^^^
SyntaxError: Cannot use import statement outside a module
> 1 | import database from '@react-native-firebase/database';
Среда (пожалуйста, заполните следующую информацию): - Детокс: 15.1.3 - Реактив Native: 0.61.5 - Узел: 13.5.0 - Устройство: Dell XPS 13 2019 - ОС: Arch Linux - Тестовый бегун: Шут + Жасмин