[java-idp-integration-tests] 03/10: Cleanup - remove TestNG data provider and simplify Sauce Labs

Tom Zeller tzeller at dragonacea.biz
Wed Aug 28 22:38:31 UTC 2024


This is an automated email from the git hooks/post-receive script.

tzeller pushed a commit to branch main
in repository java-idp-integration-tests.

View the commit online:
http://git.shibboleth.net/view/?p=java-idp-integration-tests.git;a=commit;h=ad1041ac91a581eb61456edb756929ad8fffb963

commit ad1041ac91a581eb61456edb756929ad8fffb963
Author: Tom Zeller <tzeller at dragonacea.biz>
AuthorDate: Tue Aug 27 23:16:27 2024 -0500

    Cleanup - remove TestNG data provider and simplify Sauce Labs
---
 .../idp/integration/tests/BaseIntegrationTest.java | 262 ++++++---------------
 .../idp/integration/tests/BrowserData.java         | 140 -----------
 .../idp/integration/tests/ModuleTest.java          |   8 +-
 .../idp/integration/tests/StatusTest.java          |   8 +-
 .../integration/tests/cas/CASIntegrationTest.java  |  13 +-
 .../tests/clientstorage/ClientStorageTest.java     |  18 +-
 .../tests/consent/UserPrefsRevokeConsentTest.java  |  13 +-
 .../idp/integration/tests/oidc/OIDCTest.java       |   9 +-
 .../tests/plugins/DuoNimbusPluginTest.java         |   8 +-
 .../tests/plugins/DuoSDKPluginTest.java            |   8 +-
 .../tests/plugins/InstallAllPluginsTest.java       |   8 +-
 .../plugins/JDBCStorageServicePluginTest.java      |   8 +-
 .../tests/plugins/MetadatagenPluginTest.java       |   8 +-
 .../tests/plugins/NashornPluginTest.java           |   8 +-
 .../tests/plugins/OIDCCommonPluginTest.java        |   8 +-
 .../integration/tests/plugins/OIDCPluginTest.java  |   8 +-
 .../integration/tests/plugins/RhinoPluginTest.java |   8 +-
 .../integration/tests/plugins/TOTPPluginTest.java  |   8 +-
 .../tests/saml1/AbstractSAML1IntegrationTest.java  |  14 +-
 .../saml1/SAML1UnsolicitedSSOIntegrationTest.java  |  16 +-
 .../tests/saml2/AbstractSAML2IntegrationTest.java  |  65 ++---
 .../saml2/SAML2AttributeQueryIntegrationTest.java  | 102 ++++----
 .../tests/saml2/SAML2SSOPOSTIntegrationTest.java   |  64 +++--
 .../saml2/SAML2SSORedirectIntegrationTest.java     |  76 +++---
 .../saml2/SAML2SSORedirectLDAPIntegrationTest.java |  15 +-
 .../saml2/SAML2UnsolicitedSSOIntegrationTest.java  |  47 ++--
 .../tests/ui/csrf/CSRFMitigationTest.java          |   9 +-
 27 files changed, 301 insertions(+), 658 deletions(-)

diff --git a/src/test/java/net/shibboleth/idp/integration/tests/BaseIntegrationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/BaseIntegrationTest.java
index de89b67..3e1a1a3 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/BaseIntegrationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/BaseIntegrationTest.java
@@ -104,7 +104,6 @@ import org.testng.annotations.AfterSuite;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.DataProvider;
 import org.testng.annotations.Listeners;
 
 import net.shibboleth.idp.installer.PropertiesWithComments;
@@ -149,13 +148,13 @@ import net.shibboleth.shared.xml.ParserPool;
  * </p>
  * 
  * <p>
- * Test methods should start clients via {@link #startSeleniumClient(BrowserData)} and start the server via
- * {@link #startJettyServer()}.
+ * Test methods should start clients via {@link #startBrowser()} and start the server via
+ * {@link #startServer()}.
  * </p>
  * 
  * <p>
- * By default, tests run using a local browser. By default the {@link HtmlUnitDriver} will be used. To override, set the
- * {@link #driver} to the desired {@link WebDriver}. See {@link #startSeleniumClient(BrowserData)} for one way to
+ * By default, tests run using a local browser. By default the {@link FirefoxDriver} will be used. To override, set the
+ * {@link #driver} to the desired {@link WebDriver}. See {@link #startBrowser()} for one way to
  * override.
  * </p>
  * 
@@ -167,28 +166,11 @@ import net.shibboleth.shared.xml.ParserPool;
  * </p>
  * 
  * <p>
- * With Sauce Labs, the browsers tested are defined by {@link SauceBrowserDataProvider#SAUCE_ONDEMAND_BROWSERS} in the
- * environment, which is a JSON string. See
- * <a href="https://docs.saucelabs.com/ci-integrations/jenkins/">https://docs.saucelabs.com/ci-integrations/jenkins/</a>
- * for details. This is populated by the Jenkins Sauce OnDemand Plugin. If this is not available via the environment,
- * the 'firefox' browser is used by default, see {@link #sauceOnDemandBrowserDataProvider(Method)}. To override the
- * 'firefox' browser, manipulate the {@link #desiredCapabilities} before calling
- * {@link #startSeleniumClient(BrowserData)}, for example:
- * </p>
- * 
- * <pre>
- * desiredCapabilities.setCapability("platform", "win8");
- * </pre>
- * 
- * <p>or</p>
- * 
- * <pre>
- * desiredCapabilities.setCapability(org.openqa.selenium.remote.CapabilityType.Platform,
- * org.openqa.selenium.Platform.WIN8);
- * </pre>
- * 
- * <p>
- * See {@link org.openqa.selenium.Platform}. Or, configure a new TestNG data provider.
+ * With Sauce Labs, the browsers tested are defined by these system properties or environment variables :
+ *   SELENIUM_PLATFORM
+ *   SELENIUM_BROWSER
+ *   SELENIUM_VERSION
+ *   SELENIUM_DEVICE
  * </p>
  */
 @Listeners({TestNameLogger.class})
@@ -1101,24 +1083,24 @@ public abstract class BaseIntegrationTest {
      * Note : this method must be called in each test.
      * </p>
      * 
-     * @param browserData the platform+browser+version triplet
-     * 
      * @throws Exception if an error occurs
      */
-    public void startSeleniumClient(@Nullable final BrowserData browserData) throws Exception {
+    public void startBrowser() throws Exception {
         if (BaseIntegrationTest.isRemote()) {
             log.debug("Setting up remote Sauce Labs web driver");
-            final DesiredCapabilities desiredCapabilities = setUpDesiredCapabilities(browserData);
-            setUpSauceDriver(desiredCapabilities);
-        } else if (browserData.getBrowser().equalsIgnoreCase("chrome")) {
-            log.debug("Setting up local Chrome web driver");
-            setUpChromeDriver();
-        } else if (browserData.getBrowser().equalsIgnoreCase("safari")) {
-            log.debug("Setting up local Safari web driver");
-            setUpSafariDriver();
+            setUpRemoteDriver();
         } else {
-            log.debug("Setting up local Firefox web driver");
-            setUpFirefoxDriver();
+            final String browser = System.getProperty("SELENIUM_BROWSER", System.getenv("SELENIUM_BROWSER"));
+            if (browser == null) {
+                log.debug("Setting up local Firefox web driver");
+                setUpFirefoxDriver();
+            } else if (browser.equalsIgnoreCase("chrome")) {
+                log.debug("Setting up local Chrome web driver");
+                setUpChromeDriver();
+            } else if (browser.equalsIgnoreCase("safari")) {
+                log.debug("Setting up local Safari web driver");
+                setUpSafariDriver();
+            }
         }
         log.debug("Started web driver '{}'", driver);
         setUpImplicitWait();
@@ -1128,7 +1110,7 @@ public abstract class BaseIntegrationTest {
      * Quit the web driver.
      */
     @AfterMethod(enabled = true)
-    public void stopSeleniumClient() {
+    public void stopBrowser() {
         if (driver != null) {
             log.debug("Stopping Selenium client");
             driver.quit();
@@ -1650,14 +1632,16 @@ public abstract class BaseIntegrationTest {
      * Set up remote web driver to Sauce Labs.
      * 
      * <p>
-     * Prefers credentials from environment variables, as provided by Jenkins Sauce OnDemand Plugin.
+     * Prefers credentials from environment variables, as provided by Jenkins Sauce Labs Plugin.
      * </p>
      * 
-     * @throws IOException ...
+     * @throws IOException if an error occurs
      */
-    public void setUpSauceDriver(@Nonnull final DesiredCapabilities capabilities) throws IOException {
+    public void setUpRemoteDriver() throws IOException {
         log.info("Set up Sauce Labs");
         log.debug("Sauce Labs user '{}'", System.getenv("SAUCE_USERNAME"));
+        
+        final DesiredCapabilities capabilities = setUpDesiredCapabilities();
 
         final Map<String, Object> sauceOptions = new HashMap<>();
         sauceOptions.put("username", System.getenv("SAUCE_USERNAME"));
@@ -1674,110 +1658,13 @@ public abstract class BaseIntegrationTest {
     }
 
     /**
-     * Set up the desired browser capabilities.
-     * 
-     * Specify browser-specific options or arguments here.
-     * 
-     * Prefer capabilities as provided by the data provider {@link sauceOnDemandBrowserDataProvider}.
-     * 
-     * Sets the test name to be displayed by Sauce Labs at
-     * <a href="https://saucelabs.com/tests">https://saucelabs.com/tests</a>.
-     * 
-     * The desired capabilities will be overridden by the {@link #overrideCapabilities} if non-null.
+     * Set up the remote browser based on system properties or environment variables.
      * 
      * Disables JSON view when using Firefox and Microsoft Edge.
      * 
      * Accepts insecure certs when using browsers other than Safari.
-     * 
-     * Use non-secure port when using Safari.
-     * 
-     * @param browserData the browser data
-     */
-    public DesiredCapabilities setUpDesiredCapabilities(@Nullable final BrowserData browserData) {
-
-        final DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
-
-        if (browserData != null) {
-            // If iPhone or iPad
-            if (browserData.getBrowser().equalsIgnoreCase("ipad")
-                    || browserData.getBrowser().equalsIgnoreCase("iphone")) {
-                // Set capabilities based on Sauce Labs Platform Configurator
-                // browser name
-                desiredCapabilities.setCapability("browserName", "Safari");
-                // browser OS
-                desiredCapabilities.setCapability("platformName", "iOS");
-                // OS version
-                desiredCapabilities.setCapability("appium:platformVersion", "current_major");
-                // required for iOS
-                desiredCapabilities.setCapability("appium:automationName", "XCUITest");
-                // browser device
-                if (browserData.getDevice() != null) {
-                    desiredCapabilities.setCapability("appium:deviceName", browserData.getDevice());
-                }
-            } else {
-                // browser name
-                if (browserData.getBrowser() != null) {
-                    desiredCapabilities.setCapability("browserName", browserData.getBrowser());
-                }
-                // browser version
-                if (browserData.getVersion() != null) {
-                    desiredCapabilities.setCapability("browserVersion", browserData.getVersion());
-                }
-                // browser OS
-                if (browserData.getOS() != null) {
-                    desiredCapabilities.setCapability("platformName", browserData.getOS());
-                }
-                // browser device
-                if (browserData.getDevice() != null) {
-                    desiredCapabilities.setCapability("deviceName", browserData.getDevice());
-                }
-            }
-        }
-
-        if (desiredCapabilities.getBrowserName().equalsIgnoreCase("firefox")) {
-            log.debug("Disabling Firefox JSON view");
-            final FirefoxOptions options = new FirefoxOptions();
-            options.addPreference("devtools.jsonview.enabled", false);
-            desiredCapabilities.merge(options);
-        }
-
-        if (browserData != null && (browserData.getBrowser().equalsIgnoreCase("safari")
-                || browserData.getBrowser().equalsIgnoreCase("ipad")
-                || browserData.getBrowser().equalsIgnoreCase("iphone"))) {
-            log.debug("Safari does not support accepting insecure certs");
-        } else {
-            desiredCapabilities.setAcceptInsecureCerts(true);
-        }
-
-        if (desiredCapabilities.getBrowserName().equalsIgnoreCase("MicrosoftEdge")) {
-            log.debug("Disabling Microsoft Edge JSON view");
-            final EdgeOptions options = new EdgeOptions();
-            options.addArguments("--disable-features=msEdgeJSONViewer");
-            desiredCapabilities.merge(options);
-        }
-
-        log.debug("Desired capabilities '{}'", desiredCapabilities);
-        return desiredCapabilities;
-    }
-
-    /**
-     * A TestNG {@link DataProvider} which provides platform/browser/version triplets in the form of {@link BrowserData}.
-     * 
-     * The browser to be tested is determined from the SELENIUM_PLATFORM, SELENIUM_VERSION, SELENIUM_BROWSER, and SELENIUM_DRIVER environment
-     * variables.
-     * 
-     * Rewrites 'Mac 11' platform as 'macOS 11' as a workaround when using Sauce Labs.
-     * 
-     * Populates browser data with SELENIUM_DEVICE if it exists, used to select iOS devices.
-     * 
-     * @param testMethod the test method
-     * @return data provider which supplies {@link BrowserData} to test methods
      */
-    @DataProvider(name = "sauceOnDemandBrowserDataProvider", parallel = false)
-    public static Iterator<Object[]> sauceOnDemandBrowserDataProvider(@Nonnull
-    final Method testMethod) {
-
-        final Logger log = LoggerFactory.getLogger(BaseIntegrationTest.class);
+    public DesiredCapabilities setUpDesiredCapabilities() {
 
         log.trace("System property      SAUCE_ONDEMAND_BROWSERS  '{}'", System.getProperty("SAUCE_ONDEMAND_BROWSERS"));
         log.trace("System property      SELENIUM_PLATFORM        '{}'", System.getProperty("SELENIUM_PLATFORM"));
@@ -1800,43 +1687,58 @@ public abstract class BaseIntegrationTest {
         log.debug("SELENIUM_BROWSER  '{}'", browser);
         log.debug("SELENIUM_VERSION  '{}'", version);
         log.debug("SELENIUM_DEVICE   '{}'", device);
-        
-        final BrowserData browserData = new BrowserData();
-
-        if (platform != null) {
-            // hack macOS
-            if (platform.equalsIgnoreCase("Mac 11")) {
-                log.debug("Rewriting platform 'Mac 11' as 'macOS 11'");
-                browserData.setOS("macOS 11");
-            } else {
-                browserData.setOS(platform);
-            }
-        }
 
-        if (browser != null) {
-            browserData.setBrowser(browser);
+        final DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
+
+        // If iPhone or iPad
+        if (browser.equalsIgnoreCase("ipad") || browser.equalsIgnoreCase("iphone")) {
+            // Set capabilities based on Sauce Labs Platform Configurator
+            desiredCapabilities.setCapability("browserName", "Safari");
+
+            desiredCapabilities.setCapability("platformName", "iOS");
+
+            desiredCapabilities.setCapability("appium:platformVersion", "current_major");
+
+            desiredCapabilities.setCapability("appium:automationName", "XCUITest");
+
+            if (device != null) {
+                desiredCapabilities.setCapability("appium:deviceName", device);
+            }
         } else {
-            log.debug("No SELENIUM_BROWSER found, defaulting to Firefox");
-            browserData.setBrowser("firefox");
-        }
+            desiredCapabilities.setCapability("browserName", browser);
 
-        if (version != null) {
-            browserData.setVersion(version);
-        }
+            desiredCapabilities.setCapability("browserVersion", version);
+
+            desiredCapabilities.setCapability("platformName", platform);
 
-        if (device != null) {
-            browserData.setDevice(device);
+            if (device != null) {
+                desiredCapabilities.setCapability("deviceName", device);
+            }
         }
 
-        final List<Object[]> data = new ArrayList<Object[]>();
+        if (desiredCapabilities.getBrowserName().equalsIgnoreCase("firefox")) {
+            log.debug("Disabling Firefox JSON view");
+            final FirefoxOptions options = new FirefoxOptions();
+            options.addPreference("devtools.jsonview.enabled", false);
+            desiredCapabilities.merge(options);
+        }
 
-        data.add(new Object[] {browserData});
+        if (browser.equalsIgnoreCase("safari") || browser.equalsIgnoreCase("ipad")
+                || browser.equalsIgnoreCase("iphone")) {
+            log.debug("Safari does not support accepting insecure certs");
+        } else {
+            desiredCapabilities.setAcceptInsecureCerts(true);
+        }
 
-        for (final Object[] array : data) {
-            LoggerFactory.getLogger(BaseIntegrationTest.class).debug("Browser data provider '{}'", array);
+        if (desiredCapabilities.getBrowserName().equalsIgnoreCase("MicrosoftEdge")) {
+            log.debug("Disabling Microsoft Edge JSON view");
+            final EdgeOptions options = new EdgeOptions();
+            options.addArguments("--disable-features=msEdgeJSONViewer");
+            desiredCapabilities.merge(options);
         }
 
-        return data.iterator();
+        log.debug("Desired capabilities '{}'", desiredCapabilities);
+        return desiredCapabilities;
     }
 
     /**
@@ -1851,26 +1753,6 @@ public abstract class BaseIntegrationTest {
         return (System.getProperty(SELENIUM_IS_REMOTE, "false").equalsIgnoreCase("true")) ? true : false;
     }
 
-    /**
-     * Whether the browser is Safari on macOS or iOS.
-     * 
-     * @return whether the browser is Safari.
-     */
-    public boolean isSafari(@Nullable final BrowserData browserData) {
-        if (browserData != null) {
-            if (browserData.getBrowser().equalsIgnoreCase("safari")) {
-                return true;
-            }
-            if (browserData.getBrowser().equalsIgnoreCase("iphone")) {
-                return true;
-            }
-            if (browserData.getBrowser().equalsIgnoreCase("ipad")) {
-                return true;
-            }
-        }
-        return false;
-    }
-
     /**
      * Set up the client IP range used in conf/access-control.xml to Sauce Labs {@link #SAUCE_LABS_IP_RANGE} if Selenium
      * is not local.
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/BrowserData.java b/src/test/java/net/shibboleth/idp/integration/tests/BrowserData.java
deleted file mode 100644
index 051195d..0000000
--- a/src/test/java/net/shibboleth/idp/integration/tests/BrowserData.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development, 
- * Inc. (UCAID) under one or more contributor license agreements.  See the 
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache 
- * License, Version 2.0 (the "License"); you may not use this file except in 
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.integration.tests;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import net.shibboleth.shared.annotation.constraint.NotEmpty;
-import net.shibboleth.shared.logic.Constraint;
-import net.shibboleth.shared.primitive.StringSupport;
-
-/**
- * Bean which represents browser/OS/version triplet as provided by
- * {@link BaseIntegrationTest#sauceOnDemandBrowserDataProvider}.
- */
-public class BrowserData {
-
-    /** Browser name. */
-    private String browserName;
-
-    /** Browser version. */
-    private String browserVersion;
-
-    /** Browser operating system. */
-    private String browserOS;
-
-    /** Browser device. */
-    private String browserDevice;
-
-    /**
-     * Get the browser name.
-     * 
-     * @return the browser name
-     */
-    @Nullable public String getBrowser() {
-        return browserName;
-    }
-
-    /**
-     * Get the browser version.
-     * 
-     * @return the browser version
-     */
-    @Nullable public String getVersion() {
-        return browserVersion;
-    }
-
-    /**
-     * Get the browser OS.
-     * 
-     * @return the browser OS
-     */
-    @Nullable public String getOS() {
-        return browserOS;
-    }
-
-    /**
-     * Get the browser device.
-     * 
-     * @return the browser device
-     */
-    @Nullable public String getDevice() {
-        return browserDevice;
-    }
-
-    /**
-     * Set the browser name.
-     * 
-     * @param browser the browser name
-     * 
-     * @return the {@link BrowserData}
-     */
-    public BrowserData setBrowser(@Nonnull @NotEmpty final String browser) {
-        browserName = Constraint.isNotNull(StringSupport.trimOrNull(browser), "Browser cannot be null nor empty");
-        return this;
-    }
-
-    /**
-     * Set the browser version.
-     * 
-     * @param version the browser version
-     * 
-     * @return the {@link BrowserData}
-     */
-    public BrowserData setVersion(@Nonnull @NotEmpty final String version) {
-        browserVersion = Constraint.isNotNull(StringSupport.trimOrNull(version), "Version cannot be null nor empty");
-        return this;
-    }
-
-    /**
-     * Set the browser OS.
-     * 
-     * @param os the browser OS
-     * 
-     * @return the {@link BrowserData}
-     */
-    public BrowserData setOS(@Nonnull @NotEmpty final String os) {
-        browserOS = Constraint.isNotNull(StringSupport.trimOrNull(os), "OS cannot be null nor empty");
-        return this;
-    }
-
-    /**
-     * Set the browser device.
-     * 
-     * @param device the browser device
-     * 
-     * @return the {@link BrowserData}
-     */
-    public BrowserData setDevice(@Nonnull @NotEmpty final String device) {
-        browserDevice = Constraint.isNotNull(StringSupport.trimOrNull(device), "Device cannot be null nor empty");
-        return this;
-    }
-
-    /** {@inheritDoc} */
-    @Override public String toString() {
-        final StringBuilder stringForm = new StringBuilder("BrowserData {");
-        stringForm.append("platform:").append(browserOS).append(", ");
-        stringForm.append("browser:").append(browserName).append(", ");
-        stringForm.append("version:").append(browserVersion).append(", ");
-        stringForm.append("device:").append(browserDevice);
-        stringForm.append("}");
-        return stringForm.toString();
-    }
-
-}
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/ModuleTest.java b/src/test/java/net/shibboleth/idp/integration/tests/ModuleTest.java
index d154de2..b953ecd 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/ModuleTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/ModuleTest.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.idp.integration.tests;
 
-import javax.annotation.Nullable;
-
 import org.testng.annotations.Test;
 
 /**
@@ -29,13 +27,11 @@ public class ModuleTest extends BaseIntegrationTest {
     /**
      * Test starting the IdP with all modules enabled.
      * 
-     * @param browserData
-     *            the platform+browser+version triplet
      * @throws Exception
      *             if an error occurs
      */
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testStartingServerWithAllModulesEnabled(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testStartingServerWithAllModulesEnabled() throws Exception {
 
         final String[] modulesToEnable = disabledModules().toArray(String[]::new);
 
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/StatusTest.java b/src/test/java/net/shibboleth/idp/integration/tests/StatusTest.java
index 3a0596a..3f45513 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/StatusTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/StatusTest.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.idp.integration.tests;
 
-import javax.annotation.Nullable;
-
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
@@ -33,10 +31,10 @@ public class StatusTest extends BaseIntegrationTest {
     /** Initial text of status page . */
     public final static String STARTS_WITH = "### Operating Environment Information";
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testStatus(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testStatus() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         startServer();
 
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/cas/CASIntegrationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/cas/CASIntegrationTest.java
index d891ddc..d230555 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/cas/CASIntegrationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/cas/CASIntegrationTest.java
@@ -28,7 +28,6 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 import net.shibboleth.idp.integration.tests.BaseIntegrationTest;
-import net.shibboleth.idp.integration.tests.BrowserData;
 import net.shibboleth.shared.primitive.StringSupport;
 
 /**
@@ -138,10 +137,10 @@ public class CASIntegrationTest extends BaseIntegrationTest {
                 "<cas:attributes>ANY_ATTRIBUTES</cas:attributes>");
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testCASSSO(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testCASSSO() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         enableLogout();
 
@@ -176,10 +175,10 @@ public class CASIntegrationTest extends BaseIntegrationTest {
         Assert.assertEquals(modifiedCASServiceResponse, expectedCASServiceResponse);
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testCASSSOWithAttributes(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testCASSSOWithAttributes() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         enableLogout();
 
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/clientstorage/ClientStorageTest.java b/src/test/java/net/shibboleth/idp/integration/tests/clientstorage/ClientStorageTest.java
index 8c5f5c7..5f702da 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/clientstorage/ClientStorageTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/clientstorage/ClientStorageTest.java
@@ -22,7 +22,6 @@ import java.nio.file.Paths;
 import java.time.Duration;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
@@ -37,7 +36,6 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 import net.shibboleth.idp.integration.tests.BaseIntegrationTest;
-import net.shibboleth.idp.integration.tests.BrowserData;
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
 
 /**
@@ -149,7 +147,7 @@ public class ClientStorageTest extends BaseIntegrationTest {
             replaceIdPHomeFile(pathToTestFlow, oldText, newText);
         }
     }
-    
+
     /**
      * Initialize client storage by executing the test client-storage/read flow.
      */
@@ -214,11 +212,11 @@ public class ClientStorageTest extends BaseIntegrationTest {
         waitForPageURLContains("/idp/storage/create");
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testRecordNotFound(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testRecordNotFound() throws Exception {
+
+        startBrowser();
 
-        startSeleniumClient(browserData);
-        
         disableLocalStorage();
 
         startServer();
@@ -232,10 +230,10 @@ public class ClientStorageTest extends BaseIntegrationTest {
         Assert.assertTrue(getPageSource().contains(HttpStatus.NOT_FOUND.getReasonPhrase()));
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testCreate(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testCreate() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         disableLocalStorage();
 
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/consent/UserPrefsRevokeConsentTest.java b/src/test/java/net/shibboleth/idp/integration/tests/consent/UserPrefsRevokeConsentTest.java
index 42dd9dd..aa57fab 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/consent/UserPrefsRevokeConsentTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/consent/UserPrefsRevokeConsentTest.java
@@ -17,15 +17,12 @@
 
 package net.shibboleth.idp.integration.tests.consent;
 
-import javax.annotation.Nullable;
-
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.integration.tests.BrowserData;
 import net.shibboleth.idp.integration.tests.saml2.AbstractSAML2IntegrationTest;
 
 /**
@@ -48,13 +45,11 @@ public class UserPrefsRevokeConsentTest extends AbstractSAML2IntegrationTest {
      * 
      * Only for IdP version 5 or later.
      * 
-     * @param browserData
-     *            browser/os/version triplet provided by data provider
      * @throws Exception
      *             if an error occurs
      */
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testUserPrefsRevokeConsent(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testUserPrefsRevokeConsent() throws Exception {
 
         // Skip IdP V4
         if (idpVersion.startsWith("4")) {
@@ -65,8 +60,8 @@ public class UserPrefsRevokeConsentTest extends AbstractSAML2IntegrationTest {
         if (idpVersion.startsWith("5.0")) {
             return;
         }
-        
-        startSeleniumClient(browserData);
+
+        startBrowser();
 
         enableModule("idp.intercept.Consent");
 
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/oidc/OIDCTest.java b/src/test/java/net/shibboleth/idp/integration/tests/oidc/OIDCTest.java
index ff469fd..8f6fb05 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/oidc/OIDCTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/oidc/OIDCTest.java
@@ -37,7 +37,6 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 import net.shibboleth.idp.integration.tests.BaseIntegrationTest;
-import net.shibboleth.idp.integration.tests.BrowserData;
 import net.shibboleth.shared.component.ComponentInitializationException;
 
 /**
@@ -505,13 +504,11 @@ public class OIDCTest extends BaseIntegrationTest {
     /**
      * Test the IdP + OP plugin with 2 Docker OIDC RPs.
      * 
-     * @param browserData
-     *            browser/os/version triplet provided by data provider
      * @throws Exception
      *             if an error occurs
      */
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider", enabled = true)
-    public void testSSO(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testSSO() throws Exception {
 
         // Only run if IdP V5 or later on Linux
         if (isWindows() || idpVersion.startsWith("4")) {
@@ -571,7 +568,7 @@ public class OIDCTest extends BaseIntegrationTest {
 
         assertPluginsAreOnStatusPage(plugins);
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         getOpenIDConfigurationFromBrowser();
 
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/plugins/DuoNimbusPluginTest.java b/src/test/java/net/shibboleth/idp/integration/tests/plugins/DuoNimbusPluginTest.java
index 000ec39..fa23025 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/plugins/DuoNimbusPluginTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/plugins/DuoNimbusPluginTest.java
@@ -17,19 +17,15 @@
 
 package net.shibboleth.idp.integration.tests.plugins;
 
-import javax.annotation.Nullable;
-
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.integration.tests.BrowserData;
-
 /**
  * Test Duo Universal Prompt via the Shibboleth Nimbus Client plugin.
  */
 public class DuoNimbusPluginTest extends BasePluginTest {
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testDuoNimbusClientPluginInstallation(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testDuoNimbusClientPluginInstallation() throws Exception {
 
         final String[] plugins = new String[] {
                 "net.shibboleth.oidc.common",
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/plugins/DuoSDKPluginTest.java b/src/test/java/net/shibboleth/idp/integration/tests/plugins/DuoSDKPluginTest.java
index 0820001..75d7f57 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/plugins/DuoSDKPluginTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/plugins/DuoSDKPluginTest.java
@@ -17,19 +17,15 @@
 
 package net.shibboleth.idp.integration.tests.plugins;
 
-import javax.annotation.Nullable;
-
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.integration.tests.BrowserData;
-
 /**
  * Test Duo Universal Prompt via the Duo WebSDK v4 Client plugin.
  */
 public class DuoSDKPluginTest extends BasePluginTest {
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testDuoSDKClientPluginInstallation(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testDuoSDKClientPluginInstallation() throws Exception {
 
         final String[] plugins = new String[] {
                 "net.shibboleth.oidc.common",
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/plugins/InstallAllPluginsTest.java b/src/test/java/net/shibboleth/idp/integration/tests/plugins/InstallAllPluginsTest.java
index 0fb41cd..a0e9fa8 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/plugins/InstallAllPluginsTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/plugins/InstallAllPluginsTest.java
@@ -17,19 +17,15 @@
 
 package net.shibboleth.idp.integration.tests.plugins;
 
-import javax.annotation.Nullable;
-
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.integration.tests.BrowserData;
-
 /**
  * Test installing all plugins.
  */
 public class InstallAllPluginsTest extends BasePluginTest {
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testInstallingAllPlugins(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testInstallingAllPlugins() throws Exception {
 
         // Install "base" plugins
 
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/plugins/JDBCStorageServicePluginTest.java b/src/test/java/net/shibboleth/idp/integration/tests/plugins/JDBCStorageServicePluginTest.java
index 1b47d17..47c9dd2 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/plugins/JDBCStorageServicePluginTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/plugins/JDBCStorageServicePluginTest.java
@@ -17,19 +17,15 @@
 
 package net.shibboleth.idp.integration.tests.plugins;
 
-import javax.annotation.Nullable;
-
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.integration.tests.BrowserData;
-
 /**
  * Test JDBCStorageService plugin.
  */
 public class JDBCStorageServicePluginTest extends BasePluginTest {
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testJDBCStorageServicePluginInstallation(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testJDBCStorageServicePluginInstallation() throws Exception {
 
         final String[] plugins = idpVersion.startsWith("4")
                 ? new String[] { "net.shibboleth.idp.plugin.storage.jdbc" }
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/plugins/MetadatagenPluginTest.java b/src/test/java/net/shibboleth/idp/integration/tests/plugins/MetadatagenPluginTest.java
index e212daa..affb72d 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/plugins/MetadatagenPluginTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/plugins/MetadatagenPluginTest.java
@@ -17,19 +17,15 @@
 
 package net.shibboleth.idp.integration.tests.plugins;
 
-import javax.annotation.Nullable;
-
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.integration.tests.BrowserData;
-
 /**
  * Test Metadatagen plugin.
  */
 public class MetadatagenPluginTest extends BasePluginTest {
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testMetadatagenPluginInstallation(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testMetadatagenPluginInstallation() throws Exception {
 
         final String[] plugins = new String[] {
                 "net.shibboleth.idp.plugin.metadatagen" };
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/plugins/NashornPluginTest.java b/src/test/java/net/shibboleth/idp/integration/tests/plugins/NashornPluginTest.java
index 592fd82..9a3f61e 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/plugins/NashornPluginTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/plugins/NashornPluginTest.java
@@ -17,19 +17,15 @@
 
 package net.shibboleth.idp.integration.tests.plugins;
 
-import javax.annotation.Nullable;
-
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.integration.tests.BrowserData;
-
 /**
  * Test Nashorn plugin.
  */
 public class NashornPluginTest extends BasePluginTest {
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testNashornPluginInstallation(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testNashornPluginInstallation() throws Exception {
 
         final String[] plugins = new String[] {
                 "net.shibboleth.idp.plugin.nashorn" };
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/plugins/OIDCCommonPluginTest.java b/src/test/java/net/shibboleth/idp/integration/tests/plugins/OIDCCommonPluginTest.java
index 2938adf..ec065f9 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/plugins/OIDCCommonPluginTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/plugins/OIDCCommonPluginTest.java
@@ -17,19 +17,15 @@
 
 package net.shibboleth.idp.integration.tests.plugins;
 
-import javax.annotation.Nullable;
-
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.integration.tests.BrowserData;
-
 /**
  * Test OIDC common plugin.
  */
 public class OIDCCommonPluginTest extends BasePluginTest {
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testOIDCCommonPluginInstallation(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testOIDCCommonPluginInstallation() throws Exception {
 
         final String[] plugins = new String[] {
                 "net.shibboleth.oidc.common" };
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/plugins/OIDCPluginTest.java b/src/test/java/net/shibboleth/idp/integration/tests/plugins/OIDCPluginTest.java
index ee66735..8b369e3 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/plugins/OIDCPluginTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/plugins/OIDCPluginTest.java
@@ -17,19 +17,15 @@
 
 package net.shibboleth.idp.integration.tests.plugins;
 
-import javax.annotation.Nullable;
-
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.integration.tests.BrowserData;
-
 /**
  * Test OIDC OP plugin.
  */
 public class OIDCPluginTest extends BasePluginTest {
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testOIDCPluginInstallation(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testOIDCPluginInstallation() throws Exception {
 
         final String[] plugins = new String[] {
                 "net.shibboleth.oidc.common",
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/plugins/RhinoPluginTest.java b/src/test/java/net/shibboleth/idp/integration/tests/plugins/RhinoPluginTest.java
index bcb7ba8..0f61c32 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/plugins/RhinoPluginTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/plugins/RhinoPluginTest.java
@@ -17,19 +17,15 @@
 
 package net.shibboleth.idp.integration.tests.plugins;
 
-import javax.annotation.Nullable;
-
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.integration.tests.BrowserData;
-
 /**
  * Test Rhino plugin.
  */
 public class RhinoPluginTest extends BasePluginTest {
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testRhinoPluginInstallation(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testRhinoPluginInstallation() throws Exception {
 
         final String[] plugins = new String[] {
                 "net.shibboleth.idp.plugin.rhino" };
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/plugins/TOTPPluginTest.java b/src/test/java/net/shibboleth/idp/integration/tests/plugins/TOTPPluginTest.java
index c369319..d486358 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/plugins/TOTPPluginTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/plugins/TOTPPluginTest.java
@@ -17,19 +17,15 @@
 
 package net.shibboleth.idp.integration.tests.plugins;
 
-import javax.annotation.Nullable;
-
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.integration.tests.BrowserData;
-
 /**
  * Test TOTP plugin.
  */
 public class TOTPPluginTest extends BasePluginTest {
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testTOTPPluginInstallation(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testTOTPPluginInstallation() throws Exception {
 
         final String[] plugins = new String[] {
                 "net.shibboleth.idp.plugin.authn.totp" };
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/saml1/AbstractSAML1IntegrationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/saml1/AbstractSAML1IntegrationTest.java
index 23d545e..1c32394 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/saml1/AbstractSAML1IntegrationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/saml1/AbstractSAML1IntegrationTest.java
@@ -26,11 +26,6 @@ import java.nio.file.Paths;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.idp.integration.tests.BaseIntegrationTest;
-import net.shibboleth.idp.integration.tests.BrowserData;
-import net.shibboleth.idp.test.flows.saml1.SAML1TestResponseValidator;
-import net.shibboleth.shared.xml.XMLParserException;
-
 import org.opensaml.core.xml.io.Unmarshaller;
 import org.opensaml.core.xml.io.UnmarshallingException;
 import org.opensaml.saml.saml1.core.AuthenticationStatement;
@@ -41,6 +36,10 @@ import org.testng.annotations.BeforeMethod;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
+import net.shibboleth.idp.integration.tests.BaseIntegrationTest;
+import net.shibboleth.idp.test.flows.saml1.SAML1TestResponseValidator;
+import net.shibboleth.shared.xml.XMLParserException;
+
 /**
  * Abstract SAML 1 integration test.
  */
@@ -144,12 +143,11 @@ public class AbstractSAML1IntegrationTest extends BaseIntegrationTest {
     /**
      * Test SAML 1 SSO.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSO(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSO() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         if (!idpVersion.startsWith("3")) {
             enableSAML1Profiles();
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/saml1/SAML1UnsolicitedSSOIntegrationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/saml1/SAML1UnsolicitedSSOIntegrationTest.java
index d9dea27..9d259a2 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/saml1/SAML1UnsolicitedSSOIntegrationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/saml1/SAML1UnsolicitedSSOIntegrationTest.java
@@ -18,9 +18,6 @@
 package net.shibboleth.idp.integration.tests.saml1;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import net.shibboleth.idp.integration.tests.BrowserData;
 
 import org.testng.annotations.Test;
 
@@ -45,10 +42,8 @@ public class SAML1UnsolicitedSSOIntegrationTest extends AbstractSAML1Integration
      * Set up URLs.
      * 
      * Do not use secure URLs if browser is Safari.
-     * 
-     * @param browserData platform/browser/version triplet
      */
-    public void setUpURLs(@Nullable final BrowserData browserData) {
+    public void setUpURLs() {
 
         final String shire = getBaseURL() + shirePath;
 
@@ -62,12 +57,11 @@ public class SAML1UnsolicitedSSOIntegrationTest extends AbstractSAML1Integration
     /**
      * Test SAML 1 unsolicited SSO.
      * 
-     * @param browserData platform/browser/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSAML1UnsolicitedSSO(@Nullable final BrowserData browserData) throws Exception {
-        setUpURLs(browserData);
-        super.testSSO(browserData);
+    @Test
+    public void testSAML1UnsolicitedSSO() throws Exception {
+        setUpURLs();
+        super.testSSO();
     }
 }
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/saml2/AbstractSAML2IntegrationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/saml2/AbstractSAML2IntegrationTest.java
index 5a4c0cf..6fd03ab 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/saml2/AbstractSAML2IntegrationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/saml2/AbstractSAML2IntegrationTest.java
@@ -27,7 +27,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import net.shibboleth.idp.integration.tests.BaseIntegrationTest;
-import net.shibboleth.idp.integration.tests.BrowserData;
 import net.shibboleth.idp.integration.tests.StatusTest;
 import net.shibboleth.idp.test.flows.saml2.SAML2TestResponseValidator;
 import net.shibboleth.idp.test.flows.saml2.SAML2TestStatusResponseTypeValidator;
@@ -233,12 +232,11 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
     /**
      * Test SAML 2 SSO releasing all attributes.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSOReleaseAllAttributes(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSOReleaseAllAttributes() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         startServer();
 
@@ -276,12 +274,11 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
     /**
      * Test SAML 2 SSO releasing a single attribute.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSOReleaseOneAttribute(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSOReleaseOneAttribute() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         enablePerAttributeConsent();
 
@@ -327,12 +324,11 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
     /**
      * Test SAML 2 SSO releasing all attributes and not remembering consent.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSODoNotRememberConsent(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSODoNotRememberConsent() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         startServer();
 
@@ -380,12 +376,11 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
     /**
      * Test SAML 2 SSO with global attribute consent.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSOGlobalConsent(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSOGlobalConsent() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         startServer();
 
@@ -425,12 +420,11 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
     /**
      * Test SAML 2 SSO terms of use flow.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSOTermsOfUse(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSOTermsOfUse() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         enableCustomRelyingPartyConfiguration();
 
@@ -478,12 +472,11 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
     /**
      * Test IsPassive SAML 2 SSO terms of use flow.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSOTermsOfUsePassive(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSOTermsOfUsePassive() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         enableCustomRelyingPartyConfiguration();
 
@@ -531,12 +524,11 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
     /**
      * Test IsPassive SAML 2 SSO terms of use flow with no previous consent.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSOTermsOfUsePassiveNoConsent(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSOTermsOfUsePassiveNoConsent() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         enableCustomRelyingPartyConfiguration();
 
@@ -571,12 +563,11 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
     /**
      * Test SAML 2 SSO ForceAuthn.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSOForceAuthn(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSOForceAuthn() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         startServer();
 
@@ -618,12 +609,11 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
     /**
      * Test SSO IsPassive without a session.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSOPassiveWithoutSession(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSOPassiveWithoutSession() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         startServer();
 
@@ -644,12 +634,11 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
     /**
      * Test SSO IsPassive with a pre-existing session.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSOPassiveWithSession(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSOPassiveWithSession() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         startServer();
 
@@ -689,12 +678,11 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
     /**
      * Test SSO IsPassive with a pre-existing session.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSOPassiveWithSessionNoConsent(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSOPassiveWithSessionNoConsent() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         startServer();
 
@@ -737,9 +725,9 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
         passiveValidator.validateResponse(unmarshallResponse(getPageSource()));
     }
 
-    public void testSLO(@Nullable final BrowserData browserData) throws Exception {
+    public void testSLO() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         enableLogout();
 
@@ -791,10 +779,9 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
     /**
      * Test SAML 2 SSO releasing attributes from an LDAP directory.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    public void testSSOReleaseLDAPAttributes(@Nullable final BrowserData browserData) throws Exception {
+    public void testSSOReleaseLDAPAttributes() throws Exception {
 
         // Only the mail and uid attributes are released from LDAP by default
         validator.expectedAttributes.clear();
@@ -805,7 +792,7 @@ public abstract class AbstractSAML2IntegrationTest extends BaseIntegrationTest {
 
         enableAttributeResolverLDAPExportUid();
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         startServer();
 
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2AttributeQueryIntegrationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2AttributeQueryIntegrationTest.java
index 658f694..1b2f0f4 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2AttributeQueryIntegrationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2AttributeQueryIntegrationTest.java
@@ -46,7 +46,6 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import net.shibboleth.idp.integration.tests.BaseIntegrationTest;
-import net.shibboleth.idp.integration.tests.BrowserData;
 import net.shibboleth.idp.test.flows.saml2.SAML2TestResponseValidator;
 import net.shibboleth.idp.test.flows.saml2.SAML2TestStatusResponseTypeValidator;
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
@@ -323,12 +322,11 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
     /**
      * Activities common to tests. Start a browser, configure and start the IdP, etc.
      * 
-     * @param browserData browser/os/version triplet provided by data provider
      * @throws Exception if an error occurs
      */
-    protected void commonSetup(@Nullable final BrowserData browserData) throws Exception {
+    protected void commonSetup() throws Exception {
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         enableDirectNameIDMapping();
 
@@ -343,10 +341,10 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         setAttributeQueryEndpoint();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testNoCertNoSignature(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testNoCertNoSignature() throws Exception {
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(null);
 
@@ -355,10 +353,10 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateErrorResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testNoCertTrustedSignature(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testNoCertTrustedSignature() throws Exception {
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(trustedSpCert);
 
@@ -369,10 +367,10 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testNoCertUntrustedSignature(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testNoCertUntrustedSignature() throws Exception {
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate("classpath:/credentials/sp-untrusted.crt");
 
@@ -383,10 +381,10 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateErrorResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testTrustedCertNoSignature(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testTrustedCertNoSignature() throws Exception {
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(null);
 
@@ -395,10 +393,10 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateErrorResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testTrustedCertTrustedSignature(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testTrustedCertTrustedSignature() throws Exception {
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(trustedSpCert);
 
@@ -409,10 +407,10 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testTrustedCertUntrustedSignature(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testTrustedCertUntrustedSignature() throws Exception {
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(untrustedSpCert);
 
@@ -423,10 +421,10 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateErrorResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testUntrustedCertNotSigned(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testUntrustedCertNotSigned() throws Exception {
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(null);
 
@@ -435,10 +433,10 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateErrorResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testUntrustedCertTrustedSignature(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testUntrustedCertTrustedSignature() throws Exception {
         
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(trustedSpCert);
 
@@ -449,10 +447,10 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testUntrustedCertUntrustedSignature(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testUntrustedCertUntrustedSignature() throws Exception {
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(untrustedSpCert);
 
@@ -463,12 +461,12 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateErrorResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testConsentDisabledReleaseAllAttributes(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testConsentDisabledReleaseAllAttributes() throws Exception {
 
         enableConsentStorageService();
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(trustedSpCert);
 
@@ -513,14 +511,14 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testConsentEnabledNoConsent(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testConsentEnabledNoConsent() throws Exception {
 
         enableConsent();
 
         enableConsentStorageService();
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(trustedSpCert);
 
@@ -531,14 +529,14 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateEmptyResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testConsentEnabledDoNotRememberConsent(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testConsentEnabledDoNotRememberConsent() throws Exception {
 
         enableConsent();
 
         enableConsentStorageService();
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(trustedSpCert);
 
@@ -579,14 +577,14 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateEmptyResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testConsentEnabledGlobalConsent(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testConsentEnabledGlobalConsent() throws Exception {
 
         enableConsent();
 
         enableConsentStorageService();
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(trustedSpCert);
 
@@ -629,14 +627,14 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testConsentEnabledReleaseAllAttributes(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testConsentEnabledReleaseAllAttributes() throws Exception {
 
         enableConsent();
 
         enableConsentStorageService();
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(trustedSpCert);
 
@@ -679,8 +677,8 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testConsentEnabledReleaseOneAttribute(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testConsentEnabledReleaseOneAttribute() throws Exception {
 
         enableConsent();
 
@@ -688,7 +686,7 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
 
         enablePerAttributeConsent();
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(trustedSpCert);
 
@@ -743,8 +741,8 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
         validateResponse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testConsentNoCondition(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testConsentNoCondition() throws Exception {
 
         // remove condition from configuration, simulate an upgrade
         final Path pathToConsentInterceptConfigXML = Paths.get("conf", "intercept", "consent-intercept-config.xml");
@@ -757,7 +755,7 @@ public class SAML2AttributeQueryIntegrationTest extends AbstractSAML2Integration
 
         enableConsentStorageService();
 
-        commonSetup(browserData);
+        commonSetup();
 
         setClientSigningCertificate(trustedSpCert);
 
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2SSOPOSTIntegrationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2SSOPOSTIntegrationTest.java
index 661cca4..24e40c8 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2SSOPOSTIntegrationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2SSOPOSTIntegrationTest.java
@@ -17,10 +17,6 @@
 
 package net.shibboleth.idp.integration.tests.saml2;
 
-import javax.annotation.Nullable;
-
-import net.shibboleth.idp.integration.tests.BrowserData;
-
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
@@ -47,54 +43,54 @@ public class SAML2SSOPOSTIntegrationTest extends AbstractSAML2IntegrationTest {
         logoutTransientIDInputID = "InitSLO_POST";
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOReleaseAllAttributes(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOReleaseAllAttributes(browserData);
+    @Test
+    public void testSSOReleaseAllAttributes() throws Exception {
+        super.testSSOReleaseAllAttributes();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOReleaseOneAttribute(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOReleaseOneAttribute(browserData);
+    @Test
+    public void testSSOReleaseOneAttribute() throws Exception {
+        super.testSSOReleaseOneAttribute();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSODoNotRememberConsent(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSODoNotRememberConsent(browserData);
+    @Test
+    public void testSSODoNotRememberConsent() throws Exception {
+        super.testSSODoNotRememberConsent();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOGlobalConsent(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOGlobalConsent(browserData);
+    @Test
+    public void testSSOGlobalConsent() throws Exception {
+        super.testSSOGlobalConsent();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOTermsOfUse(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOTermsOfUse(browserData);
+    @Test
+    public void testSSOTermsOfUse() throws Exception {
+        super.testSSOTermsOfUse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOForceAuthn(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOForceAuthn(browserData);
+    @Test
+    public void testSSOForceAuthn() throws Exception {
+        super.testSSOForceAuthn();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOPassiveWithoutSession(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOPassiveWithoutSession(browserData);
+    @Test
+    public void testSSOPassiveWithoutSession() throws Exception {
+        super.testSSOPassiveWithoutSession();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOPassiveWithSession(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOPassiveWithSession(browserData);
+    @Test
+    public void testSSOPassiveWithSession() throws Exception {
+        super.testSSOPassiveWithSession();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOPassiveWithSessionNoConsent(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOPassiveWithSessionNoConsent(browserData);
+    @Test
+    public void testSSOPassiveWithSessionNoConsent() throws Exception {
+        super.testSSOPassiveWithSessionNoConsent();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider", enabled = false)
-    public void testSLO(@Nullable final BrowserData browserData) throws Exception {
-        super.testSLO(browserData);
+    @Test(enabled = false)
+    public void testSLO() throws Exception {
+        super.testSLO();
     }
 
 }
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2SSORedirectIntegrationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2SSORedirectIntegrationTest.java
index f1bd64e..fab1713 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2SSORedirectIntegrationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2SSORedirectIntegrationTest.java
@@ -17,10 +17,6 @@
 
 package net.shibboleth.idp.integration.tests.saml2;
 
-import javax.annotation.Nullable;
-
-import net.shibboleth.idp.integration.tests.BrowserData;
-
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
@@ -47,64 +43,64 @@ public class SAML2SSORedirectIntegrationTest extends AbstractSAML2IntegrationTes
         logoutTransientIDInputID = "InitSLO_Redirect";
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOReleaseAllAttributes(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOReleaseAllAttributes(browserData);
+    @Test
+    public void testSSOReleaseAllAttributes() throws Exception {
+        super.testSSOReleaseAllAttributes();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOReleaseOneAttribute(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOReleaseOneAttribute(browserData);
+    @Test
+    public void testSSOReleaseOneAttribute() throws Exception {
+        super.testSSOReleaseOneAttribute();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSODoNotRememberConsent(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSODoNotRememberConsent(browserData);
+    @Test
+    public void testSSODoNotRememberConsent() throws Exception {
+        super.testSSODoNotRememberConsent();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOGlobalConsent(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOGlobalConsent(browserData);
+    @Test
+    public void testSSOGlobalConsent() throws Exception {
+        super.testSSOGlobalConsent();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOTermsOfUse(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOTermsOfUse(browserData);
+    @Test
+    public void testSSOTermsOfUse() throws Exception {
+        super.testSSOTermsOfUse();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOTermsOfUsePassive(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOTermsOfUsePassive(browserData);
+    @Test
+    public void testSSOTermsOfUsePassive() throws Exception {
+        super.testSSOTermsOfUsePassive();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOTermsOfUsePassiveNoConsent(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOTermsOfUsePassiveNoConsent(browserData);
+    @Test
+    public void testSSOTermsOfUsePassiveNoConsent() throws Exception {
+        super.testSSOTermsOfUsePassiveNoConsent();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOForceAuthn(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOForceAuthn(browserData);
+    @Test
+    public void testSSOForceAuthn() throws Exception {
+        super.testSSOForceAuthn();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOPassiveWithoutSession(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOPassiveWithoutSession(browserData);
+    @Test
+    public void testSSOPassiveWithoutSession() throws Exception {
+        super.testSSOPassiveWithoutSession();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOPassiveWithSession(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOPassiveWithSession(browserData);
+    @Test
+    public void testSSOPassiveWithSession() throws Exception {
+        super.testSSOPassiveWithSession();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOPassiveWithSessionNoConsent(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOPassiveWithSessionNoConsent(browserData);
+    @Test
+    public void testSSOPassiveWithSessionNoConsent() throws Exception {
+        super.testSSOPassiveWithSessionNoConsent();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider", enabled = false)
-    public void testSLO(@Nullable final BrowserData browserData) throws Exception {
-        super.testSLO(browserData);
+    @Test(enabled = false)
+    public void testSLO() throws Exception {
+        super.testSLO();
     }
 
 }
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2SSORedirectLDAPIntegrationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2SSORedirectLDAPIntegrationTest.java
index 3e63f77..9bf1e6e 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2SSORedirectLDAPIntegrationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2SSORedirectLDAPIntegrationTest.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.idp.integration.tests.saml2;
 
-import javax.annotation.Nullable;
-
 import org.openqa.selenium.By;
 import org.openqa.selenium.NoSuchElementException;
 import org.opensaml.core.xml.XMLObjectBuilder;
@@ -31,7 +29,6 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.integration.tests.BrowserData;
 import net.shibboleth.idp.integration.tests.StatusTest;
 
 /** SAML 2 HTTP Redirect binding test with attributes from LDAP. */
@@ -57,9 +54,9 @@ public class SAML2SSORedirectLDAPIntegrationTest extends AbstractSAML2Integratio
         logoutTransientIDInputID = "InitSLO_Redirect";
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOReleaseLDAPAttributes(@Nullable final BrowserData browserData) throws Exception {
-        super.testSSOReleaseLDAPAttributes(browserData);
+    @Test
+    public void testSSOReleaseLDAPAttributes() throws Exception {
+        super.testSSOReleaseLDAPAttributes();
     }
 
     public void setUpIDP1026Validator() {
@@ -83,8 +80,8 @@ public class SAML2SSORedirectLDAPIntegrationTest extends AbstractSAML2Integratio
         validator.expectedAttributes.add(uidAttribute);
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testIDP1026(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testIDP1026() throws Exception {
 
         setUpIDP1026Validator();
 
@@ -92,7 +89,7 @@ public class SAML2SSORedirectLDAPIntegrationTest extends AbstractSAML2Integratio
 
         enableAttributeResolverLDAPExportUid();
 
-        startSeleniumClient(browserData);
+        startBrowser();
 
         startServer();
 
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2UnsolicitedSSOIntegrationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2UnsolicitedSSOIntegrationTest.java
index e950551..30bfc8e 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2UnsolicitedSSOIntegrationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/saml2/SAML2UnsolicitedSSOIntegrationTest.java
@@ -18,9 +18,6 @@
 package net.shibboleth.idp.integration.tests.saml2;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import net.shibboleth.idp.integration.tests.BrowserData;
 
 import org.testng.annotations.Test;
 
@@ -43,10 +40,8 @@ public class SAML2UnsolicitedSSOIntegrationTest extends AbstractSAML2Integration
      * Set up URLs.
      * 
      * Do not use secure URLs if browser is Safari.
-     * 
-     * @param browserData platform/browser/version triplet
      */
-    public void setUpURLs(@Nullable final BrowserData browserData) throws Exception {
+    public void setUpURLs() throws Exception {
 
         final String shire = getBaseURL() + shirePath;
 
@@ -57,33 +52,33 @@ public class SAML2UnsolicitedSSOIntegrationTest extends AbstractSAML2Integration
         responsePageURLPath = shirePath;
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOReleaseAllAttributes(@Nullable final BrowserData browserData) throws Exception {
-        setUpURLs(browserData);
-        super.testSSOReleaseAllAttributes(browserData);
+    @Test
+    public void testSSOReleaseAllAttributes() throws Exception {
+        setUpURLs();
+        super.testSSOReleaseAllAttributes();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOReleaseOneAttribute(@Nullable final BrowserData browserData) throws Exception {
-        setUpURLs(browserData);
-        super.testSSOReleaseOneAttribute(browserData);
+    @Test
+    public void testSSOReleaseOneAttribute() throws Exception {
+        setUpURLs();
+        super.testSSOReleaseOneAttribute();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSODoNotRememberConsent(@Nullable final BrowserData browserData) throws Exception {
-        setUpURLs(browserData);
-        super.testSSODoNotRememberConsent(browserData);
+    @Test
+    public void testSSODoNotRememberConsent() throws Exception {
+        setUpURLs();
+        super.testSSODoNotRememberConsent();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOGlobalConsent(@Nullable final BrowserData browserData) throws Exception {
-        setUpURLs(browserData);
-        super.testSSOGlobalConsent(browserData);
+    @Test
+    public void testSSOGlobalConsent() throws Exception {
+        setUpURLs();
+        super.testSSOGlobalConsent();
     }
 
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testSSOTermsOfUse(@Nullable final BrowserData browserData) throws Exception {
-        setUpURLs(browserData);
-        super.testSSOTermsOfUse(browserData);
+    @Test
+    public void testSSOTermsOfUse() throws Exception {
+        setUpURLs();
+        super.testSSOTermsOfUse();
     }
 }
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/ui/csrf/CSRFMitigationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/ui/csrf/CSRFMitigationTest.java
index 2b93c21..90e38fb 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/ui/csrf/CSRFMitigationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/ui/csrf/CSRFMitigationTest.java
@@ -23,7 +23,6 @@ import java.time.Duration;
 import java.util.List;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 
 import org.openqa.selenium.By;
 import org.openqa.selenium.JavascriptExecutor;
@@ -36,7 +35,6 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 import net.shibboleth.idp.integration.tests.BaseIntegrationTest;
-import net.shibboleth.idp.integration.tests.BrowserData;
 
 /**
  * Test the anti-csrf token is required when submitting the username and password form.
@@ -75,15 +73,14 @@ public class CSRFMitigationTest extends BaseIntegrationTest {
      * Check that a username/password login form submitted without an anti-csrf token renders the invalid CSRF token page.
      * <p>Only runs for IdP v4 or greater</p>
      * 
-     * @param browserData the browser data
      * @throws Exception on exception
      */
-    @Test(dataProvider = "sauceOnDemandBrowserDataProvider")
-    public void testCSRFTokenRemovedFromLoginPage(@Nullable final BrowserData browserData) throws Exception {
+    @Test
+    public void testCSRFTokenRemovedFromLoginPage() throws Exception {
         
         if (getMajorIdPVersionAsInt() >= 4) {
          
-            startSeleniumClient(browserData);
+            startBrowser();
             
             //make sure CSRF protection is enabled
             replaceIdPProperty("idp.csrf.enabled", "true");

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list