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();
}
});
});
}