function test()

in build/testing/sauce-labs/test-browsers.js [81:178]


function test(branchName) {
    console.log("Testing Git branch:", branchName);

    // Execute Selenium/Appium Web Drivers on Sauce Labs for each browser configuration
    var flows = browsers.map(function (browser) {
        // Setup capabilities
        let capabilities = {
            name: "FAST Documentation",
            build: branchName,
            tags: "msft-docs",
            appiumVersion: browser.appiumVersion,
            platform: browser.platform,
            platformName: browser.platformName,
            platformVersion: browser.platformVersion,
            deviceName: browser.deviceName,
            orientation: browser.deviceOrientation,
            browserName: browser.browserName,
            version: browser.version,
            screen_resolution: browser.screenResolution,
            language: browser.language,
            locale: browser.locale,
            username: username,
            password: accessKey,
            extendedDebugging: true,
        };

        // Setup WebDriver
        let driver = new Builder()
            .withCapabilities(capabilities)
            .usingServer(remoteHub)
            .build();

        // Start session and execute test cases
        driver.getSession().then(async function () {
            try {
                await driver.get(domain);

                /**
                 * Note: There are many ways to nagivate/find elements on a page
                 * unfortunately, not all are cross-browser compliant.
                 * As a result, we're using webdriver's navigate.
                 *
                 * Add in data-test attributes to each component, page, layout,
                 * or container we want to capture and select on that.
                 *
                 * TODO: After browsers matrix is determined we can fine tune and
                 * optimize to use other selectors to see what works. If we're
                 * testing on modern browsers this isn't as much a limitation.
                 */

                // Iterate each components documentation
                await driver.navigate().to(`${domain}/components/button/`);
                await driver.navigate().to(`${domain}/components/caption/`);
                await driver.navigate().to(`${domain}/components/checkbox/`);
                await driver.navigate().to(`${domain}/components/dialog/`);
                await driver.navigate().to(`${domain}/components/divider/`);
                await driver.navigate().to(`${domain}/components/flipper/`);
                await driver.navigate().to(`${domain}/components/heading/`);
                await driver.navigate().to(`${domain}/components/hypertext/`);
                await driver.navigate().to(`${domain}/components/image/`);
                await driver.navigate().to(`${domain}/components/label/`);
                await driver.navigate().to(`${domain}/components/metatext/`);
                await driver.navigate().to(`${domain}/components/paragraph/`);
                await driver.navigate().to(`${domain}/components/subheading/`);
                await driver.navigate().to(`${domain}/components/text-field/`);
                await driver.navigate().to(`${domain}/components/toggle/`);
                await driver.navigate().to(`${domain}/components/typography/`);

                /**
                 * Turn on Developer tools and iterate each component
                 * For example:
                 * data-test="friendly name"
                 * driver.findElement(By.cssSelector('[data-element="city"]'))
                 */

                // Navigate to example views for each component
                await driver.navigate().to(`${domain}/components/button/examples`);
                await driver.navigate().to(`${domain}/components/caption/examples`);
                await driver.navigate().to(`${domain}/components/checkbox/examples`);
                await driver.navigate().to(`${domain}/components/dialog/examples`);
                await driver.navigate().to(`${domain}/components/divider/examples`);
                await driver.navigate().to(`${domain}/components/flipper/examples`);
                await driver.navigate().to(`${domain}/components/heading/examples`);
                await driver.navigate().to(`${domain}/components/hypertext/examples`);
                await driver.navigate().to(`${domain}/components/image/examples`);
                await driver.navigate().to(`${domain}/components/label/examples`);
                await driver.navigate().to(`${domain}/components/metatext/examples`);
                await driver.navigate().to(`${domain}/components/paragraph/examples`);
                await driver.navigate().to(`${domain}/components/subheading/examples`);
                await driver.navigate().to(`${domain}/components/text-field/examples`);
                await driver.navigate().to(`${domain}/components/toggle/examples`);
                await driver.navigate().to(`${domain}/components/typography/examples`);
            } finally {
                await driver.quit();
            }
        });
    });
}