Как настроить тесты e2e Angular без CLI? - PullRequest
0 голосов
/ 24 мая 2018

Я сейчас пытаюсь сделать e2e-тест для очень большого приложения Angular, но у меня возникают проблемы с его настройкой.Из-за различных обстоятельств я не могу попытаться интегрировать Angular CLI в проект, поэтому мне приходится обходить его.

мой projectstructur

app
├── e2e
│   ├── tsconfig.e2e.json
│   ├── component.e2e-spec.ts
│   └── pages
│        └── component.page.ts
├── ....
├── protractor.conf.js
└── tsconfig.json

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "sourceMap": true,
    "allowJs": true,
    "noEmit": true,
    "noEmitHelpers": true,
    "importHelpers": true,
    "strictNullChecks": false,
    "lib": [
      "dom",
      "es6"
    ]
  },
  "typeRoots": [
      "node_modules/@types"
    ],
  "types": [
      "jasmine",
      "node",
      "source-map",
      "uglify-js",
      "webpack"
  ],
  "exclude": [
    "node_modules",
    "!node_modules/@types",
    "dist",
    "typescript"
  ],
  "awesomeTypescriptLoaderOptions": {
    "forkChecker": true,
    "useWebpackText": true
  },
  "compileOnSave": false,
  "buildOnSave": false,
  "atom": {
    "rewriteTsconfig": false
  }
}

protractor.conf.ts

 const {SpecReporter} = require('jasmine-spec-reporter');

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './e2e/**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome',
    directConnect: true,
    baseUrl: 'http://localhost:4200/',
    framework: 'jasmine',
    jasmineNodeOpts: {
      showColors: true,
      defaultTimeoutInterval: 30000,
      print: function () {
      }
    },
    onPrepare() {
      require('ts-node').register({
        project: 'e2e/tsconfig.e2e.json'
      });
      jasmine.getEnv().addReporter(new SpecReporter({spec: {displayStacktrace: true}}));
    }
  }
}

tsconfig.e2e.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/e2e",
    "module": "commonjs",
    "target": "es5",
    "types": [
      "jasmine",
      "jasminewd2",
      "node"
    ]
  }
}

Я могу запустить свой сервер, используя:

npm run webpack-dev-server -- --config config/webpack.dev.js --open --progress --profile --watch --content-base src/

и когда я пытаюсь запустить тест e2e с:

npm-run-all -p -r server:prod:ci protractor

, я получаю следующее сообщение об ошибке:

Error: C:\Users\xxx\Desktop\app\e2e\component.e2e-spec.ts:1
(function (exports, require, module, __filename, __dirname) { import { ComponentPage} from './pages/component.page';
                                                          ^^^^^^
SyntaxError: Unexpected token import
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)

Я думаю, что возникает ошибка, поскольку файлы .ts не передаютсяto .js ... Так что я думаю, что моя конфигурация или способ, которым я запускаю тесты, неверны.

...