Transferidor + Mocha falha no conjunto com TypeError antes do navegador carregar o SUT

Contexto

Estou explorando angular2 + angular-cli + texto datilografado. Meu objetivo é garantir que, se eu estiver fazendo um aplicativo angular ou de nó em texto datilografado, usaria as mesmas tecnologias de teste que os aplicativos de nó herdados que usam mocha. Para esse fim, estou tentando reconfigurar o angular-cli geradoprotractor.conf.js usar mocha em vez de jasmim.

Pergunta, questão

Como você integra adequadamente o angular-cli + mocha + transferidor para que os testes sejam executados com o transferidor, fornecendo às especificações do mocha um navegador / elemento / componentes úteis?

Eu já mudei oprotractor.conf.js usar mocha e chai e os testes são concluídos, no entanto, todas as interações com os componentes do transferidor falham, ou seja,element(by.css('app-root h1')).getText().

convertido protractor.conf.js
exports.config = {
  allScriptsTimeout: 11000, // The timeout for a script run on the browser. 
  specs: [
    './e2e/**/*.e2e-spec.ts' // pattern for the test specs
  ],
  baseUrl: 'http://localhost:4200/', // base url of the SUT
  capabilities: {
    'browserName': 'chrome' // browser to use
  },
  directConnect: true, // selenium will not need a server, direct connet to chrome
  framework: 'mocha', // Use mocha instead of jasmine
  mochaOpts: { // Mocha specific options 
    reporter: "spec",
    slow: 3000,
    ui: 'bdd',
    timeout: 30000
  },
  beforeLaunch: function() { // Do all the typescript 
    require('ts-node').register({
      project: 'e2e/tsconfig.e2e.json'
    });
  },
  onPrepare: function() {}
};
Suspeita

Parece que o problema é que o conjunto está sendo executado (e falhando) antes que o navegador carregue o aplicativo. Pode ser a interação transferidor / navegador que, pelo que entendi, deve ser independente da especificação que está sendo usada. Talvez esse entendimento esteja incorreto?

Fonte de exemplo

Eu tenho um exemplo em execução no GitHub que estou usando para testar e comparar a conversão

Galho quebrado usando mochaMestre de trabalho usando jasmimInvestigação até agora

Transferidor em execução (via nó) na linha de comandonode node_modules\protractor\bin\protractor protractor.conf.js --stackTrace --troubleshoot nos mostra que o conjunto está configurado e em execução com umtruthy teste, um teste ignorado e os testes reais de aplicação

Resultados da suíte

Vemos que o teste de verdade está passando, o teste ignorado e todos os testes de aplicativos falham com o mesmo tipo de erro

1 passing 
1 pending
5 failing

 1) A descriptive test name that is irrelevant to the error:
     TypeError: obj.indexOf is not a function
      at include (node_modules\chai\lib\chai\core\assertions.js:228:45)
      at doAsserterAsyncAndAddThen (node_modules\chai-as-promised\lib\chai-as-promised.js:293:29)
      at .<anonymous> (node_modules\chai-as-promised\lib\chai-as-promised.js:271:25)
      at chainableBehavior.method (node_modules\chai\lib\chai\utils\overwriteChainableMethod.js:51:34)
      at assert (node_modules\chai\lib\chai\utils\addChainableMethod.js:84:49)
      at Context.it (e2e\search\search.e2e-spec.ts:14:40)
      at runTest (node_modules\selenium-webdriver\testing\index.js:166:22)
      at node_modules\selenium-webdriver\testing\index.js:187:16
      at new ManagedPromise (node_modules\selenium-webdriver\lib\promise.js:1067:7)
      at controlFlowExecute (node_modules\selenium-webdriver\testing\index.js:186:14)
  From: Task: A descriptive test name that is irrelevant to the error
      at Context.ret (node_modules\selenium-webdriver\testing\index.js:185:10)

Parece que oTypeError seria causado porque o aplicativo em si nunca parece ter tempo para realmente carregar no navegador antes da conclusão do pacote

- solucionar problemas de saída
[09:26:33] D/launcher - Running with --troubleshoot
[09:26:33] D/launcher - Protractor version: 5.1.1
[09:26:33] D/launcher - Your base url for tests is http://localhost:4200/
[09:26:33] I/direct - Using ChromeDriver directly...
[09:26:36] D/runner - WebDriver session successfully started with capabilities Capabilities {
  'acceptSslCerts' => true,
  'applicationCacheEnabled' => false,
  'browserConnectionEnabled' => false,
  'browserName' => 'chrome',
  'chrome' => { chromedriverVersion: '2.28.455520 (cc17746adff54984afff480136733114c6b3704b)',
  userDataDir: 'C:\\Users\\abartish\\AppData\\Local\\Temp\\scoped_dir4596_5000' },
  'cssSelectorsEnabled' => true,
  'databaseEnabled' => false,
  'handlesAlerts' => true,
  'hasTouchScreen' => false,
  'javascriptEnabled' => true,
  'locationContextEnabled' => true,
  'mobileEmulationEnabled' => false,
  'nativeEvents' => true,
  'networkConnectionEnabled' => false,
  'pageLoadStrategy' => 'normal',
  'platform' => 'Windows NT',
  'rotatable' => false,
  'takesHeapSnapshot' => true,
  'takesScreenshot' => true,
  'unexpectedAlertBehaviour' => '',
  'version' => '56.0.2924.87',
  'webStorageEnabled' => true }
[09:26:36] D/runner - Running with spec files ./e2e/**/*.e2e-spec.ts
Informação adicional

Curiosamente, se você executar o transferidor com o elementExplorernode node_modules\protractor\bin\protractor protractor.conf.js --stackTrace --troubleshoot --elementExplorer ele não executará os testes, mas vemos o SUT resolvido no navegador que é iniciado. Isso não posso explicar.

questionAnswers(1)

yourAnswerToTheQuestion