Работая с intern.js и browserstack, получите доступ к удаленной среде браузера.

Я пытаюсь выполнить базовый функциональный тест:

define([
    'intern!object',
    'intern/chai!assert',
    '../Request',
    'require'
], function (registerSuite, assert, Request, require) {
    var request,
        url = 'https://github.com/theintern/intern';

    registerSuite({
        name: 'demo',

        'submit form': function () {
            return this.remote
                .get(require.toUrl('./fixture.html'))
                .findById('operation')
                    .click()
                    .type('hello, world')
                .end()
                .findById('submit')
                    .click()
                .end()
                .setFindTimeout(Infinity)
                .findById('result')
                .setFindTimeout(0)
                .text()
                .then(function (resultText) {
                    assert.ok(resultText.indexOf(
                        '"hello, world" completed successfully') > -1,
                        'On form submission, operation should complete successfully');
                });
        }
    });
});

(Пример из документации intern.js) https://github.com/theintern/intern/wiki/Writing-Tests-with-Intern

Мой файл конфигурации intern.js выглядит следующим образом:

define({


proxyPort: 9000,
    proxyUrl: 'http://localhost:9000/',
    capabilities: {
        'selenium-version': '2.41.0'
    },
    environments: [
        { browserName: 'chrome'}
    ],
    maxConcurrency: 3,
    tunnel: "BrowserStackTunnel",
    webdriver: {
        host: 'http://hub.browserstack.com/wd/hub',
        username: 'XXXXX',
        accessKey: 'XXXXX'
    },
    useSauceConnect: false,
    loader: {
        packages: [ 
        {
            name: "dojo",
            location: 'vendor/dojo'
        } 
        ]
    },
    suites: [ "tests/test" ],
    excludeInstrumentation: /^(?:tests|node_modules)\//
});

Когда я запускаю свой тест, кажется, что соединение устанавливается с помощью browserstack, но мой тест продолжает терпеть неудачу:

-> ./node_modules/.bin/intern-runner config=tests/intern
Listening on 0.0.0.0:9000
Starting tunnel...
BrowserStackLocal v2.2
Ready
Initialised chrome 35.0.1916.114 on XP
Test main - index - test FAILED on chrome 35.0.1916.114 on XP:
TypeError: Cannot read property 'get' of null
  at Test.registerSuite.test  <tests/test.js:11:17>
  at Test.run  <__intern/lib/Test.js:154:19>
  at <__intern/lib/Suite.js:212:13>
  at signalListener  <__intern/node_modules/dojo/Deferred.js:37:21>
  at Promise.then.promise.then  <__intern/node_modules/dojo/Deferred.js:258:5>
  at <__intern/lib/Suite.js:211:46>

Я предположил, что WebDriver не загружен, как мне получить доступ к среде удаленного браузера в моем функциональном тесте?


person cleau    schedule 08.07.2014    source источник


Ответы (1)


Только функциональные тесты взаимодействуют с клиентом WebDriver и имеют свойство remote. В конфигурацию включайте набор тестов в массив functionalSuites, а не suites.

Обратите внимание, что свойство webdriver больше не используется, поэтому, если вы хотите указать свое имя пользователя и ключ доступа в файле конфигурации, вы должны вместо этого использовать tunnelOptions.

tunnelOptions: {
    username: <username>,
    accessKey: <accessKey>
}

Туннель знает правильное имя хоста для использования по умолчанию, поэтому вам не нужно его указывать.

person jason0x43    schedule 08.07.2014
comment
Благодарю за ваш ответ. Я использовал свойство tunnelOptions и functionSuites вместо наборов, но это не решило мою проблему. Я все еще не могу отправить заказ в стек браузера или сауселабы. Браузер открывает белую страницу. - person cleau; 08.07.2014