TheIntern — определение среды для динамической генерации тестов

У меня есть ситуация, в которой мне нужно динамически генерировать функциональные тесты. По сути, я хочу использовать BrowserStack для запуска своих тестов в различных средах, но я хочу зарегистрировать другой набор тестов в зависимости от того, работаю ли я на настольном или мобильном устройстве.

Вот фрагмент кода из файла, с которого все начинается, чтобы вы могли понять, как я это делаю:

define(function (require) {
    var registerSuite = require('intern!object');
    var assert = require('intern/chai!assert');
    var config = require('intern/dojo/node!../../node_modules/our-repo/config');
    // RIGHT HERE I NEED TO KNOW PLATFORM + BROWSER INFO!
    var our_sites = ['A', 'C', 'C', 'D'];
    for (let i=0; i<our_sites.length; i++) {
        homepage_basic_site_test_suites(registerSuite, our_sites[i], config, assert);
    }
});

Затем я просматриваю конфигурацию, динамически генерируя тесты и вызывая registerSuite.

Я хотел бы иметь возможность передать еще один параметр - выбранную среду.

https://theintern.io/leadfoot/module-leadfoot_Server.html#getSessionCapabilities Похоже, там есть нужная мне информация, но я не знаю, как ее получить.

Моя конфигурация для TheIntern включает следующий список сред, и я хотел бы знать, какая из них была выбрана для конкретного запуска, прежде чем вызывать функцию homepage_basic_site_test_suites():

environments: [
    {
        browserName: 'IE',
        version: ['11'],
        platform: ['WINDOWS']
    },
    {
        browserName: 'Edge',
        version: ['13', 'latest'],
        platform: ['WINDOWS']
    },
    {
        browserName: 'Firefox',
        version: ['54', 'latest'],
        platform: [ 'WINDOWS', 'MAC']
    },
    {
        browserName: 'Chrome',
        version: ['45', 'latest'],
        platform: ['WINDOWS', 'MAC']
    },
    {
        browserName: 'Safari',
        version: ['10.1', 'latest'],
        platform: 'MAC'
    },
    {
        browserName: 'iPhone',
        platform: 'MAC',
        device: ['iPhone 6'],
        realMobile: true
    },
    {
        browserName: 'iPad',
        platform: 'MAC',
        device: ['iPad 4th'],
        realMobile: true
    },
    {
        browserName: 'android',
        platform: 'ANDROID',
        device: ['Samsung Galaxy S5'],
        realMobile: true
    }
]

person jononomo    schedule 31.08.2017    source источник


Ответы (1)


Вы можете получить информацию об окружающей среде из удаленного сеанса. В методе жизненного цикла набора или тесте вы должны использовать this.remote.session.capabilities. Однако пульт недоступен во время вызова registerSuite.

Вы можете добавить тесты внутри самого набора, где доступен пульт:

registerSuite({
    name: 'my suite',

    before: function () {
        if (this.remote.session.capabilities.something) {
            // Test is from intern/lib/Test
            this.tests.push(new Test({
                name: 'a test',
                parent: this,
                test: function () {
                    // test function
                }
            });
        }
    },

    ...
});

Другим вариантом было бы создание функциональных наборов для удаленного доступа и загрузка их с использованием конкретных конфигураций для удаленного доступа. Например, есть конфигурация Android, которая загружает специфичные для Android functionalSuites, и конфигурация iOS, которая загружает специфичные для iOS functionalSuites. Эти конфигурации могут наследоваться от центральной конфигурации, поэтому большинство свойств будут общими.

person jason0x43    schedule 05.09.2017