Попытка с Nightwatch + Browserstack настроить простой тест входа в систему, не удается - PullRequest
0 голосов
/ 26 сентября 2018

Использование "nightwatch": "^1.0.11" и "browserstack-local": "^1.3.4"

Я пробовал это много способов, но я не могу запустить примеры в документации.

У меня есть простая страница входа собъект страницы

module.exports = {
    url: function() {
      return this.api.launchUrl + '/login';
    },
    elements: {
        email: {
            selector: '#user_login_email'
        },
        password: {
            selector: '#user_login_password'
        },
        button: {
            selector: '#login-btn'
        }
    }
};

Затем я хочу запустить тест для входа на сайт (ПРИМЕЧАНИЕ: первый снимок экрана в порядке)

module.exports = {
    before(client) {
        client.maximizeWindow();
    },

    'Login' : function (client) {
        var login = client.page.login();

        login.navigate();

        client.waitForElementPresent('body', 500)
            .saveScreenshot('tests_output/login.png');

        login.setValue('@email', 'test@user.email')
            .setValue('@password', 'Pa55w0rd')
            .click('@button');

        client.pause(1000)
            .saveScreenshot('tests_output/login-complete.png');
    },

    after(client) {
        client.end();
    }
};

При попытке запустить я получаю следующие ошибкитест через стек браузеров (с локальным URL)

✖ login.test
 – Login (5.196s)

  An error occurred while running .setValue() command on <Element [name=@email]>: Error: First argument passed to .elementIdValue() should be a web element ID string. Received object.
      at Function.validateElementId (node_modules/nightwatch/lib/api/protocol.js:36:19)
      at ProtocolActions.elementIdValue (node_modules/nightwatch/lib/api/protocol.js:951:25)
      at transport.locateElement.then.result (node_modules/nightwatch/lib/api-loader/element-command.js:106:54)
      at process._tickCallback (internal/process/next_tick.js:68:7)
       at process._tickCallback (internal/process/next_tick.js:68:7)
       at process._tickCallback (internal/process/next_tick.js:68:7)


  An error occurred while running .setValue() command on <Element [name=@password]>: Error: First argument passed to .elementIdValue() should be a web element ID string. Received object.
[...]

  An error occurred while running .click() command on <Element [name=@button]>: Error: First argument passed to .elementIdClick() should be a web element ID string. Received object.
[...]

Я получил успешные тесты для запуска;просто не использую документированные примеры.

Например, приведенный ниже код прекрасно работает, чтобы закрыть сообщение cookie

client
    .waitForElementPresent('.cookie-message__button', 5, true, function(result) {
        client.elementIdClick(result.value[0].ELEMENT);
    })
    .saveScreenshot('tests_output/cookie-closed.png');

Но, очевидно, это действительно долго скручивается.

Любая помощьза то, что я делаю неправильно, было бы здорово.

Использование в качестве примера для конфигурации Nightwatch следующего примера: https://github.com/browserstack/nightwatch-browserstack/blob/master/conf/local.conf.js с локальным бегуном и параллельным выполнением тестов в 3 браузерах: https://github.com/browserstack/nightwatch-browserstack/blob/master/scripts/local.runner.js

TL; DR: примеры документации не работают с версией 1.0.11;но Nightwatch и Browserstack настроены правильно, так как могут заставить работать набор (в Travis и локально), только с очень длинным кодом, который я взломал вместе.

1 Ответ

0 голосов
/ 26 сентября 2018

Я создал пример проекта для модели объектов страницы здесь .Кроме того, образец теста входа в систему добавлен с использованием page_objects_path.

Также добавлена ​​совместимость для последней версии Nightwatch.В последней версии nightwatch, похоже, есть изменения, которые соответствуют w3c.Поэтому нам нужно использовать 'browserName' в качестве возможности вместо 'browser'

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