Как создать и использовать собственный репортер Webdriverio v6? - PullRequest
1 голос
/ 05 апреля 2020

Как мне создать и использовать собственный репортер Webdriverio v6? Я делаю подобное, вот что документы [1], кажется, предлагают:

[ Edit: Интересно, связано ли это со мной, переходя из Typescript до Javascript. Но работал отлично в Webdriverio v4. ]

import DotReporter = require('@wdio/dot-reporter');

...

const config: WebdriverIO.Config = {
   ...

   reporters: [DotReporter],

   reporters: [  [DotReporter, {}]  ],    // this also doesn't work

Затем возникает эта ошибка:

[0-0] 2020-04-03T23: 34: 22.513Z ОШИБКА @ wdio / runner: Ошибка: проверка типа для сбой опции "reporters": репортер должен быть либо строкой в ​​формате "wdio - reporter", либо функцией / классом. Пожалуйста, обратитесь к документации для получения дополнительной информации о пользовательских репортерах (https://webdriver.io/docs/customreporter.html) в validateConfig (/project/root/node_modules/@wdio/config/build/utils.js:135:17) на удаленном (/project/root/node_modules/webdriverio/build/index.js: 31: 45) at initialiseInstance (/project/root/node_modules/@wdio/runner/build/utils.js:70:36)

Но репортер равен класс. В этом случае собственный класс репотера Webdriver Dot.

Вот исходный код репортера - DotReporter Webdriverio - который я не могу получить из-за вышеуказанной ошибки:

import chalk from 'chalk'
import WDIOReporter from '@wdio/reporter'

/**
 * Initialize a new `Dot` matrix test reporter.
 */
export default class DotReporter extends WDIOReporter {
   ...

Обратите внимание что: reporters: ['dot'], хотя и работает нормально, в этом случае не является решением - репортер, которого я на самом деле хочу использовать, - мой собственный. Но я использую DotReporter в этом вопросе, потому что он приводит к той же ошибке, когда я пытаюсь использовать его в качестве настраиваемого репортера.

Что я набираю, чтобы создать, импортировать и использовать настраиваемый репортер ?

[1] Документы: https://webdriver.io/docs/customreporter.html

1 Ответ

0 голосов
/ 05 апреля 2020

Теперь это работает (но: «Вы можете принять свой собственный ответ через 2 дня») - мне пришлось сделать две вещи:

1) Изменить это:

export default class MyCustomReporter extends WDIOReporter {

на это:

export = class MyCustomReporter extends WDIOReporter {

(я не пытался выяснить, почему = работает, но не default.)

2) После этого вместо этого появилась ошибка:

[0-0] 2020-04-05T01: 26: 30.781Z ОШИБКА @ wdio / local-runner: Сбой запуска тестовой сессии: TypeError: Конструктор класса WDIOReporter не может быть вызван без 'new'

Эта ошибка исчезла, когда я отредактировал файл конфигурации компилятора Typescript, tsconfig.json, для генерации кода ES2017 Javascript:

{
    "compilerOptions": {
        "target": "ES2017",

Я предполагаю, что целью по умолчанию является ES2015 или что-то, что генерирует Javascript классов, которые Nodejs затем не могут использовать.

В любом случае, с = и ES2017 репортер теперь работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...