Vue.js могу ли я импортировать модуль в тест e2e? Синтаксическая ошибка при импорте

Я запускаю свой тест e2e, используя фреймворк NightWatch.

В тесте мне нужно проверить, чтобы отображаемое в браузере значение было сброшено до определенного начального значения, установленного как константа, экспортируемая из файла config.js.

но я получаю СИНТАКСИЧЕСКУЮ ошибку, это не принято?

Starting selenium server... started - PID:  49634
There was an error while starting the test runner:
../test/e2e/specs/test.js:4
import { WORKING_TIME } from '@/config';
^^^^^^
SyntaxError: Unexpected token import    at createScript (vm.js:74:10)
    at Object.runInThisContext (vm.js:116:10)
    at Module._compile (module.js:537:28)
    at loader (../node_modules/babel-register/lib/node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (/../node_modules/babel-register/lib/node.js:154:7)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3)
    at Module.require (module.js:517:17)
    at require (internal/module.js:11:18)

config.js

let coeff = process.env.NODE_ENV === 'testing' ? 0.5 : 1
export const WORKING_TIME = coeff * 60 

e2e/test.js

import { WORKING_TIME } from '@/config'

module.exports = { 
    'check STOP event': (browser) => {
    const devServer = browser.globals.devServerURL
    browser.url(devServer).waitForElementVisible('#app', 5000)
    browser.click('[title=start]').waitForElementVisible('i.toggle-volume', 5000)

    // CLICK on STOP button
    browser.click('[title=stop]').pause(1000)
    ...
    // Check timer is reset
    const leftPad = (str, length = 10) => {
      return `${' '.repeat(length)}${str}`
    }
    const min = Math.floor(WORKING_TIME / 60)
    const sec = WORKING_TIME % 60
    const initialTimer = leftPad(min, 2) + ':' + leftPad(sec, 2)
    browser.expect.element('.my-timer').text.to.equal(initialTimer)
    browser.end()
  }
}

person Community    schedule 06.10.2017    source источник
comment
похоже, у вас проблема в ES6. Перед запуском тестов с помощью babel обязательно выполните транспиляцию.   -  person Omran    schedule 06.10.2017
comment
спасибо Омран! понял прямо сейчас, ты поставил меня на рельсы .. см. мой собственный ответ   -  person    schedule 06.10.2017


Ответы (1)


Как упоминал @Omran, у меня была проблема с ES6.

1 - нужно вставить перед импортом (а также написать правильный путь...)

e2e/test.js

require('babel-core/register')
import { WORKING_TIME } from '../../../config'

2 - e2e test runner.js устанавливает:

process.env.NODE_ENV = 'testing'

Я должен добавить его в .babelrc

.babelrc

{
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
      }
    }],
    "stage-2"
  ],
  "plugins": ["transform-runtime"],
  "env": {
    "test": {
      "presets": ["env", "stage-2"],
      "plugins": ["istanbul"]
    },
    "testing": {
      "presets": ["env", "stage-2"],
      "plugins": ["istanbul"]
    }
  }
}
person Community    schedule 06.10.2017