Я использую jest для запуска тестового скрипта, который запускает приложение Electron с использованием Spectron. Как правильно загрузить мою конфигурацию Babel? Обычно я запускаю приложение так: npx electron -r @babel/register .
(npm запуск в пакете. json)
Мой тестовый скрипт с использованием Spectron пытается инициализировать его следующим образом:
import { Application } from 'spectron';
const app = new Application({
path: 'node_modules/electron/dist/electron',
args: ["-r @babel/register", "src/main.js"],
chromeDriverArgs: ['--disable-dev-shm-usage', '--headless'],
chromeDriverLogPath: 'chromeDriver.log'
})
Но main.js
вылетает с синтаксической ошибкой в первом операторе импорта. Ясно, что -r @babel/register
не загружается.
Если я создаю команду из этих же path
и args
вручную на терминале:
node_modules/electron/dist/electron -r @babel/register src/main.js
приложение запускается просто отлично. Но, глядя на журнал chromeDriver, я вижу, что эта команда, вероятно, не идентична той, что на самом деле называется. Из журнала:
"chromeOptions": {
"args": [ "spectron-path=node_modules/electron/dist/electron", "spectron-arg0=-r @babel/register", "spectron-arg1=src/main.js", "--disable-dev-shm-usage", "--headless" ]
Мой хакерский обходной путь сейчас заключается в создании specmain.js
сценария со следующим:
"use strict";
require("@babel/register");
require("./main")
И затем мой тестовый сценарий успешно запускает приложение, теперь использование:
const app = new Application({
path: 'node_modules/electron/dist/electron',
args: ["src/specmain.js"],
chromeDriverArgs: ['--disable-dev-shm-usage', '--headless'],
chromeDriverLogPath: 'chromeDriver.log'
})
Какой хороший подход для требования @babel/register
перед main.js
в контексте Spectron?