aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/test/java/com/vaadin/tests/tb3/BrowserStackBrowserFactory.java
blob: ba7237043fd1216560e0547cf759627e805d7603 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package com.vaadin.tests.tb3;

import java.util.logging.Logger;

import org.openqa.selenium.Platform;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

import com.vaadin.testbench.parallel.Browser;
import com.vaadin.testbench.parallel.DefaultBrowserFactory;

/**
 * Browser factory for the cloud test provider BrowserStack.
 */
public class BrowserStackBrowserFactory extends DefaultBrowserFactory {

    @Override
    public DesiredCapabilities create(Browser browser, String version,
            Platform platform) {
        DesiredCapabilities caps;

        switch (browser) {
        /* Ignored browsers */
        case CHROME:
            caps = DesiredCapabilities.chrome();
            break;
        case PHANTOMJS:
            caps = DesiredCapabilities.phantomjs();
            break;
        case SAFARI:
            caps = DesiredCapabilities.safari();
            break;
        case FIREFOX:
            caps = DesiredCapabilities.firefox();
            break;
        /* Actual browsers */
        case IE11:
            caps = DesiredCapabilities.internetExplorer();
            caps.setVersion("11");
            caps.setCapability("browser", "IE");
            caps.setCapability("browser_version", "11.0");
            // There are 2 capabilities ie.ensureCleanSession and
            // ensureCleanSession in Selenium
            // IE 11 uses ie.ensureCleanSession
            caps.setCapability("ie.ensureCleanSession", true);
            caps.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION,
                    true);
            // Workaround for an IE11 bug in BrowserStack sendKeys handling, see
            // https://www.browserstack.com/automate/using-sendkeys-on-remote-IE11
            caps.setCapability("browserstack.sendKeys", true);
            break;
        default:
            caps = DesiredCapabilities.firefox();
        }

        // BrowserStack specific parts

        // for now, run all tests on Windows 7
        caps.setCapability("os", "Windows");
        caps.setCapability("os_version", "7");
        caps.setPlatform(Platform.WINDOWS);

        // enable logging on BrowserStack
        caps.setCapability("browserstack.debug", "true");

        // tunnel
        caps.setCapability("browserstack.local", "true");
        String localIdentifier = System.getProperty("browserstack.identifier",
                "");
        if (!localIdentifier.isEmpty()) {
            caps.setCapability("browserstack.localIdentifier", localIdentifier);
        }

        // build name for easy identification in BrowserStack UI
        caps.setCapability("build",
                "BrowserStack Tests" + (localIdentifier.isEmpty() ? ""
                        : " [" + localIdentifier + "]"));

        // accept self-signed certificates
        caps.setCapability("acceptSslCerts", "true");

        caps.setCapability("resolution", "1680x1050");

        getLogger().info("Using BrowserStack capabilities " + caps);

        return caps;
    }

    private static final Logger getLogger() {
        return Logger.getLogger(BrowserStackBrowserFactory.class.getName());
    }
}