diff --git a/src/main/java/org/jenkinsci/test/acceptance/AbstractPipelineTest.java b/src/main/java/org/jenkinsci/test/acceptance/AbstractPipelineTest.java index b176ac3b2d..c64db3b9a6 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/AbstractPipelineTest.java +++ b/src/main/java/org/jenkinsci/test/acceptance/AbstractPipelineTest.java @@ -34,8 +34,6 @@ import org.jenkinsci.test.acceptance.po.Job; import org.jenkinsci.test.acceptance.po.WorkflowJob; import org.jenkinsci.test.acceptance.utils.PipelineTestUtils; -import org.openqa.selenium.NoSuchElementException; -import org.openqa.selenium.NoSuchFrameException; @WithPlugins({"workflow-job", "workflow-cps", "workflow-basic-steps", "workflow-durable-task-step"}) public class AbstractPipelineTest extends AbstractJUnitTest { @@ -72,28 +70,8 @@ protected void assertJavadoc(final Job job) { find(by.link(JAVADOC_ACTION)).click(); - /* - Same approach as https://github.com/jenkinsci/acceptance-test-harness/blob/b47dcb9a8abb771718a391372faf612a0734e76a/src/test/java/plugins/JavadocPluginTest.java#L92 - Why do we check in such way? - The java version of the Jenkins under test could be different that the one in use by this code, the ATH code. - See: https://github.com/jenkinsci/acceptance-test-harness/blob/39cbea43b73d32a0912d613a41e08ba9b54aad1d/src/main/java/org/jenkinsci/test/acceptance/controller/LocalController.java#L190 - In addition, the way javadoc is generated depends on the java version and the number of packages generated, one - or more packages. - See: https://issues.jenkins-ci.org/browse/JENKINS-32619?focusedCommentId=311819&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-311819 - So even though it's not the most refined way to check the right generation of the javadoc, this way doesn't - need to call a groovy script for checking the java version neither checking the number of packages generated. - */ - - try { - // Former behavior, javadoc generating frames and plugin without redirection - driver.switchTo().frame("classFrame"); - } catch (NoSuchFrameException e) { - try { - // With Java11 a link to the package-summary is shown, no frames - find(by.partialLinkText("package-summary.html")).click(); - } catch (NoSuchElementException nse) { - } - } + find(by.href("index-all.html")).click(); + find(by.href("io/jenkins/tools/package-summary.html")).click(); assertThat(driver, hasContent("io.jenkins.tools")); } diff --git a/src/main/java/org/jenkinsci/test/acceptance/Matchers.java b/src/main/java/org/jenkinsci/test/acceptance/Matchers.java index ec9cc1f3b2..3eac5e6b6c 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/Matchers.java +++ b/src/main/java/org/jenkinsci/test/acceptance/Matchers.java @@ -1,7 +1,6 @@ package org.jenkinsci.test.acceptance; import edu.umd.cs.findbugs.annotations.CheckForNull; -import hudson.util.VersionNumber; import java.io.File; import java.io.IOException; import java.net.HttpURLConnection; @@ -229,11 +228,8 @@ public static Matcher hasInvalidLoginInformation() { return new Matcher("has invalid login information message") { @Override public boolean matchesSafely(final Login login) { - String invalidLoginMessage = login.getJenkins().getVersion().isOlderThan(new VersionNumber("2.128")) - ? "Invalid login information. Please try again." - : "Invalid username or password"; try { - login.find(by.xpath("//div[contains(text(), '%s')]", invalidLoginMessage)); + login.find(by.xpath("//div[contains(text(), '%s')]", "Invalid username or password")); return true; } catch (NoSuchElementException e) { return false; diff --git a/src/main/java/org/jenkinsci/test/acceptance/controller/LocalController.java b/src/main/java/org/jenkinsci/test/acceptance/controller/LocalController.java index 5b4929d13c..d0947756c7 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/controller/LocalController.java +++ b/src/main/java/org/jenkinsci/test/acceptance/controller/LocalController.java @@ -5,12 +5,9 @@ import edu.umd.cs.findbugs.annotations.NonNull; import jakarta.inject.Inject; import jakarta.inject.Named; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.io.PrintStream; -import java.lang.ProcessBuilder.Redirect; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.StandardCopyOption; @@ -21,8 +18,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.SystemUtils; import org.codehaus.plexus.util.Expand; import org.codehaus.plexus.util.StringUtils; import org.jenkinsci.test.acceptance.junit.FailureDiagnostics; @@ -137,15 +132,6 @@ public void removeLogListener(LogListener l) { logWatcher.removeLogListener(l); } - /** - * @deprecated Will not work correctly in Jenkins 2.33 and later. Apparently unused anyway. - */ - @Deprecated - public File getSlaveJarPath() { - return new File(getJenkinsHome(),"war/WEB-INF/slave.jar"); // TODO look for war/WEB-INF/lib/remoting-*.jar instead - } - - public File getJenkinsHome() { return jenkinsHome; } diff --git a/src/main/java/org/jenkinsci/test/acceptance/controller/WinstoneController.java b/src/main/java/org/jenkinsci/test/acceptance/controller/WinstoneController.java index 878d86f377..db15d783b7 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/controller/WinstoneController.java +++ b/src/main/java/org/jenkinsci/test/acceptance/controller/WinstoneController.java @@ -2,7 +2,6 @@ import com.cloudbees.sdk.extensibility.Extension; import com.google.inject.Injector; -import hudson.util.VersionNumber; import jakarta.inject.Inject; import java.io.File; import java.io.IOException; @@ -13,11 +12,9 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import java.util.jar.JarFile; import java.util.logging.Logger; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; -import org.jenkinsci.test.acceptance.utils.IOUtil; import org.jenkinsci.utils.process.CommandBuilder; import org.jenkinsci.utils.process.ProcessInputStream; @@ -33,8 +30,6 @@ public class WinstoneController extends LocalController { // options to the JVM that can be added on a testcase basis in code private final List JAVA_OPTS = new ArrayList<>(); - private static final VersionNumber v2339 = new VersionNumber("2.339"); - private File portFile; protected static List envVarOpts(String jenkins_opts) { @@ -61,14 +56,6 @@ public WinstoneController(Injector i, int httpPort) { this.httpPort = httpPort; } - @Override - public void startNow() throws IOException { - if (httpPort == 0 && !supportsPortFileName()) { - httpPort = IOUtil.randomTcpPort(); - } - super.startNow(); - } - @Override protected void onReady() throws IOException { if (this.httpPort == 0 && portFile != null) { @@ -92,11 +79,9 @@ public ProcessInputStream startProcess() throws IOException{ cb.addAll(JAVA_OPTS); cb.add("-Duser.language=en", "-Djenkins.formelementpath.FormElementPathPageDecorator.enabled=true"); - if (supportsPortFileName()) { - portFile = File.createTempFile("jenkins-port", ".txt"); - portFile.deleteOnExit(); - cb.add("-Dwinstone.portFileName=" + portFile.getAbsolutePath()); - } + portFile = File.createTempFile("jenkins-port", ".txt"); + portFile.deleteOnExit(); + cb.add("-Dwinstone.portFileName=" + portFile.getAbsolutePath()); cb.add("-jar", war, "--httpPort=" + httpPort ); @@ -107,14 +92,6 @@ public ProcessInputStream startProcess() throws IOException{ return cb.popen(); } - private boolean supportsPortFileName() throws IOException { - try (JarFile warFile = new JarFile(war)) { - String jenkinsVersion = warFile.getManifest().getMainAttributes().getValue("Jenkins-Version"); - VersionNumber version = new VersionNumber(jenkinsVersion); - return version.compareTo(v2339) >= 0; - } - } - @Override public URL getUrl() { try { diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/audit_trail/AuditTrailLogger.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/audit_trail/AuditTrailLogger.java index 5b3c7503c5..87cd7fc4b9 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/audit_trail/AuditTrailLogger.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/audit_trail/AuditTrailLogger.java @@ -32,7 +32,6 @@ import org.apache.commons.io.IOUtils; import org.jenkinsci.test.acceptance.po.Jenkins; import org.jenkinsci.test.acceptance.po.JenkinsLogger; -import org.openqa.selenium.WebElement; abstract public class AuditTrailLogger extends JenkinsLogger { @@ -43,49 +42,13 @@ private AuditTrailLogger(Jenkins jenkins, String name) { } public static AuditTrailLogger create(Jenkins jenkins) { - if (jenkins.getPlugin("audit-trail").isNewerThan("2.0")) { - return new ExposedFile(jenkins); - } - - final SystemLogger logger = new SystemLogger(jenkins); - - logger.waitFor().until(() -> { - logger.open(); - return logger.getElement(by.xpath("//h1[text()='%s']", logger.name)); - }); - return logger; + return new ExposedFile(jenkins); } public abstract List getEvents(); - /** - * Audit Trail pre 2.0 uses system logger. - */ - private static class SystemLogger extends AuditTrailLogger { - - public SystemLogger(Jenkins jenkins) { - super(jenkins, "Audit Trail"); - } - - @Override - public List getEvents() { - open(); - List events = new ArrayList<>(); - for (WebElement e : all(by.css("#main-panel pre"))) { - Matcher m = LOG_PATTERN.matcher(e.getText()); - if (!m.matches()) { - continue; // Earlier versions used one element per log entry newer use two - } - events.add(m.group(1)); - } - return events; - } - } - /** * Expose file through /userContent/ and wrap in Logger. - *

- * Traditional logger in no longer created after Audit Trail 2.0 */ private static class ExposedFile extends AuditTrailLogger { diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/build_timeout/BuildTimeout.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/build_timeout/BuildTimeout.java index 33f7ee1cac..216284fd67 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/build_timeout/BuildTimeout.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/build_timeout/BuildTimeout.java @@ -40,12 +40,7 @@ private void ensureActive() { } private void chooseStrategy(String name) { - // JENKINS-20164 - if (job.getJenkins().getPlugin("build-timeout").isNewerThan("1.14")) { - control("/").select(name); - } else { - choose(name); - } + control("/").select(name); } public void abortBuild() { diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/config_file_provider/CustomConfig.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/config_file_provider/CustomConfig.java index 2ae18fadbb..9798bb6463 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/config_file_provider/CustomConfig.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/config_file_provider/CustomConfig.java @@ -1,6 +1,5 @@ package org.jenkinsci.test.acceptance.plugins.config_file_provider; -import hudson.util.VersionNumber; import org.jenkinsci.test.acceptance.po.CodeMirror; import org.jenkinsci.test.acceptance.po.Describable; @@ -15,18 +14,10 @@ public CustomConfig(ConfigFileProvider context, String id) { } /** - * From config-file-provider:3.8.0, the content box of the custom files is a CodeMirror object instead of a textarea * @param customContent the content to set */ @Override public void content(String customContent) { - final String PATH = "/config/content"; - boolean contentIsOldTextArea = this.getJenkins().getPlugin("config-file-provider").getVersion().isOlderThan(new VersionNumber("3.8.0")); - - if (contentIsOldTextArea) { - control(PATH).set(customContent); - } else { - new CodeMirror(this, PATH).set(customContent); - } + new CodeMirror(this, "/config/content").set(customContent); } } diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/credentials/DomainPage.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/credentials/DomainPage.java index b28e48ac0b..f5098b1dd4 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/credentials/DomainPage.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/credentials/DomainPage.java @@ -7,8 +7,6 @@ import java.net.URL; import org.jenkinsci.test.acceptance.po.ConfigurablePageObject; import org.jenkinsci.test.acceptance.po.Jenkins; -import org.openqa.selenium.NoSuchElementException; - public class DomainPage extends ConfigurablePageObject { @@ -43,12 +41,7 @@ public void save() { if (this.onDomainConfigurationPage()) { clickButton("Save"); } else { - try { - clickButton("Create"); - } catch (NoSuchElementException e) { - // prior to credentials:1105.vb_4e24a_c78b_81 once it makes it to LTS remove fallback - clickButton("OK"); - } + clickButton("Create"); } assertThat(driver, not(hasContent("This page expects a form submission"))); diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/dashboard_view/read/ProjectStatusStdJobList.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/dashboard_view/read/ProjectStatusStdJobList.java index 682333e512..4da280caa8 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/dashboard_view/read/ProjectStatusStdJobList.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/dashboard_view/read/ProjectStatusStdJobList.java @@ -2,7 +2,6 @@ import java.util.List; import java.util.stream.Collectors; -import org.apache.commons.lang3.StringUtils; import org.jenkinsci.test.acceptance.po.PageAreaImpl; import org.jenkinsci.test.acceptance.po.PageObject; import org.openqa.selenium.By; @@ -54,8 +53,6 @@ public List getHeaders() { public List getJobIDs() { return find(projectStatusTable).findElements(By.xpath(".//tr")) .stream() - // ignore the header row from <2.321 - .filter(tr -> !StringUtils.contains(tr.getAttribute("class"), "header")) .map(el -> el.getAttribute("id")) .map(s -> s.replaceFirst(JOB_ID_PREFIX, "")) .collect(Collectors.toList()); diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/email_ext/EmailExtPublisher.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/email_ext/EmailExtPublisher.java index c7b2c7f82d..46d47064d9 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/email_ext/EmailExtPublisher.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/email_ext/EmailExtPublisher.java @@ -1,7 +1,6 @@ package org.jenkinsci.test.acceptance.plugins.email_ext; import org.jenkinsci.test.acceptance.po.*; -import org.openqa.selenium.NoSuchElementException; /** * @author Kohsuke Kawaguchi @@ -22,14 +21,7 @@ public void setRecipient(String r) { recipient.set(r); ensureAdvancedOpened(); - // since 2.38 refactored to hetero-list, recepients ware preselected - try { - control("project_triggers/sendToList").check(); - } catch (NoSuchElementException ex) { - // some later releases do not preselect recipients - control("project_triggers/hetero-list-add[recipientProviders]").selectDropdownMenu("Recipient List"); - - } + control("project_triggers/hetero-list-add[recipientProviders]").selectDropdownMenu("Recipient List"); } public void ensureAdvancedOpened() { diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/email_ext/GlobalConfig.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/email_ext/GlobalConfig.java index 8d13e68604..68fb6ceec4 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/email_ext/GlobalConfig.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/email_ext/GlobalConfig.java @@ -25,7 +25,6 @@ import org.jenkinsci.test.acceptance.po.JenkinsConfig; import org.jenkinsci.test.acceptance.po.PageAreaImpl; -import org.openqa.selenium.NoSuchElementException; public class GlobalConfig extends PageAreaImpl { @@ -54,9 +53,6 @@ public void auth(String name, String passwd) { } private void ensureAdvanced() { - try { - control("advanced-button").click(); - } catch(NoSuchElementException ignored) { - } + control("advanced-button").click(); } } diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/git/GitScm.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/git/GitScm.java index fc11a73813..4f3aba6587 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/git/GitScm.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/git/GitScm.java @@ -25,7 +25,6 @@ import org.jenkinsci.test.acceptance.po.*; import org.openqa.selenium.By; -import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.support.ui.Select; @Describable("Git") @@ -63,24 +62,12 @@ public GitScm branch(String branch) { } public GitScm localBranch(String branch) { - try { - advanced(); - control("localBranch").set(branch); - } - catch (NoSuchElementException ex) { // Git 2.0 - addBehaviour(CheckoutToLocalBranch.class).name.set(branch); - } + addBehaviour(CheckoutToLocalBranch.class).name.set(branch); return this; } public GitScm localDir(String dir) { - try { - advanced(); - control("relativeTargetDir").set(dir); - } - catch (NoSuchElementException ex) { // Git 2.0 - addBehaviour(CheckoutToLocalDir.class).name.set(dir); - } + addBehaviour(CheckoutToLocalDir.class).name.set(dir); return this; } diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/gradle/GradleStep.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/gradle/GradleStep.java index 2ad2e6a086..b940d1bccc 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/gradle/GradleStep.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/gradle/GradleStep.java @@ -54,12 +54,7 @@ private void ensureAdvancedOptionsOpen() { } public void setVersion(String version) { - String path = parent.getJenkins().getPlugin("gradle").isOlderThan("1.24") - ? "useWrapper[false]/gradleName" - : "gradleName" - ; - - control(path).select(version); + control("gradleName").select(version); } public void setFile(final String file) { diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/jira/JiraGlobalConfig.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/jira/JiraGlobalConfig.java index b6c51eef56..0f030cfcd0 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/jira/JiraGlobalConfig.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/jira/JiraGlobalConfig.java @@ -1,6 +1,5 @@ package org.jenkinsci.test.acceptance.plugins.jira; -import hudson.util.VersionNumber; import jakarta.inject.Inject; import java.net.URL; import org.jenkinsci.test.acceptance.po.Jenkins; @@ -13,15 +12,7 @@ public class JiraGlobalConfig extends PageAreaImpl { @Inject public JiraGlobalConfig(Jenkins jenkins) { - super(jenkins, _getPath(jenkins)); - } - - private static String _getPath(Jenkins jenkins) { - boolean useNew = jenkins.getPlugin("jira").getVersion().isNewerThan(new VersionNumber("3.0.6")); - return useNew - ? "/hudson-plugins-jira-JiraGlobalConfiguration" - : "/hudson-plugins-jira-JiraProjectProperty" - ; + super(jenkins, "/hudson-plugins-jira-JiraGlobalConfiguration"); } // TODO: make this work properly when the site exists already diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/logparser/LogParserGlobalConfig.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/logparser/LogParserGlobalConfig.java index 364a9d93c9..93f693f47a 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/logparser/LogParserGlobalConfig.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/logparser/LogParserGlobalConfig.java @@ -1,6 +1,5 @@ package org.jenkinsci.test.acceptance.plugins.logparser; -import hudson.util.VersionNumber; import org.jenkinsci.test.acceptance.po.Control; import org.jenkinsci.test.acceptance.po.JenkinsConfig; import org.jenkinsci.test.acceptance.po.PageAreaImpl; @@ -20,13 +19,7 @@ public class LogParserGlobalConfig extends PageAreaImpl { private final String rulePrefix; public static LogParserGlobalConfig getInstance(JenkinsConfig context) { - boolean old = context.jenkins.getPlugin("log-parser").getVersion().isOlderThan(new VersionNumber("2.1")); - String path = old - ? "/hudson-plugins-logparser-LogParserPublisher/log-parser" - : "/hudson-plugins-logparser-LogParserPublisher" - ; - String rulePrefix = old ? "rule" : "parsingRulesGlobal"; - return new LogParserGlobalConfig(context, path, rulePrefix); + return new LogParserGlobalConfig(context, "/hudson-plugins-logparser-LogParserPublisher", "parsingRulesGlobal"); } private LogParserGlobalConfig(JenkinsConfig context, String path, String rulePrefix) { diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/maven/MavenBuildStep.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/maven/MavenBuildStep.java index 2060bb55ec..5a86ac5f3e 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/maven/MavenBuildStep.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/maven/MavenBuildStep.java @@ -1,7 +1,6 @@ package org.jenkinsci.test.acceptance.plugins.maven; import org.jenkinsci.test.acceptance.po.*; -import org.openqa.selenium.NoSuchElementException; /** * @author Kohsuke Kawaguchi @@ -31,13 +30,7 @@ public MavenBuildStep properties(String properties, boolean inject) { ensureAdvanced(); control("properties").set(properties); if (inject) { - // After the fix for JENKINS-25416 (core >= 2.12) we must explicitly say if we want the variables injected - // as properties into maven process. - try { - control("injectBuildVariables").check(true); - } catch (NoSuchElementException e) { - // Nothing, we are in core < 2.12 - } + control("injectBuildVariables").check(true); } return this; } diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/ssh_credentials/SshPrivateKeyCredential.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/ssh_credentials/SshPrivateKeyCredential.java index 2b593ee82e..a472d48785 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/ssh_credentials/SshPrivateKeyCredential.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/ssh_credentials/SshPrivateKeyCredential.java @@ -32,10 +32,7 @@ public SshPrivateKeyCredential enterDirectly(String privateKey) { public Direct selectEnterDirectly() { WebElement e = choose("Enter directly"); WebElement button = getElement(By.className("secret-update-btn")); - if (button != null) { - // for ssh-credentials >= 1.16 - button.click(); - } + button.click(); return new Direct(getPage(), e.getAttribute("path")); } diff --git a/src/main/java/org/jenkinsci/test/acceptance/plugins/subversion/SubversionScm.java b/src/main/java/org/jenkinsci/test/acceptance/plugins/subversion/SubversionScm.java index 6218fd6ad0..0167007e96 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/plugins/subversion/SubversionScm.java +++ b/src/main/java/org/jenkinsci/test/acceptance/plugins/subversion/SubversionScm.java @@ -1,10 +1,6 @@ package org.jenkinsci.test.acceptance.plugins.subversion; -import java.net.MalformedURLException; -import java.net.URL; import org.jenkinsci.test.acceptance.po.*; -import org.openqa.selenium.NoSuchElementException; -import org.openqa.selenium.WebElement; /** * Encapsulates the PageArea of the Subversion SCM @@ -33,36 +29,6 @@ public class SubversionScm extends Scm { REPOSITORY_BROWSER, REPOSITORY_BROWSER, REPOSITORY_BROWSER)); - /** - * Opens the SVNPlugin credential page for protected repositories. - * Only for plugin version 1.54 and older. - * - * @param type child of SubversionCredential.class - * @param child of SubversionCredential.class - * @return PageObject of the CredentialPage - * @throws SubversionPluginTestException if Url to credential page is not found or malformed. - */ - @Deprecated - public T getCredentialPage(Class type) throws SubversionPluginTestException { - //click into a different field to trigger the Url-Check - this.local.click(); - URL urlOfCredentialPage = null; - WebElement linkToCredentialPage; - String urlString = null; - try { - elasticSleep(1000); - linkToCredentialPage = this.find(by.link("enter credential")); - urlString = linkToCredentialPage.getAttribute("href"); - urlOfCredentialPage = new URL(urlString); - linkToCredentialPage.click(); - } catch (NoSuchElementException e) { - SubversionPluginTestException.throwRepoMayNotBeProtected(e); - } catch (MalformedURLException e) { - SubversionPluginTestException.throwMalformedURL(e, urlString); - } - return this.newInstance(type, this.injector, urlOfCredentialPage, driver.getWindowHandle()); - } - public T useRepositoryBrowser(final Class type) { repositoryBrowser.selectDropdownMenuAlt(type); return this.newInstance(type, this, this.getPage().url(getPath("[1]"))); diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/FormValidation.java b/src/main/java/org/jenkinsci/test/acceptance/po/FormValidation.java index da3f95000b..6e8600a269 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/FormValidation.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/FormValidation.java @@ -33,7 +33,6 @@ import org.jenkinsci.test.acceptance.Matcher; import org.openqa.selenium.By; import org.openqa.selenium.Keys; -import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebElement; /** @@ -84,29 +83,13 @@ public static FormValidation await(Control control, boolean silent) { element.sendKeys(Keys.TAB); // Wait for validation area to stop being

- try { - validationArea = control.waitFor().until(() -> { - // path to validation area is the parents sibling with class `validation-error-area` - String xpath = silent ? "../../div[contains(@class,'validation-error-area')]" : - "../../div[contains(@class,'validation-error-area--visible')]"; - - return element.findElement(by.xpath(xpath)); - }); - } catch (NoSuchElementException e) { - // TODO old form validation, remove once not in current LTS line - validationArea = control.waitFor().until(() -> { - // path to validation area is the parents sibling with class `validation-error-area` - WebElement va = element.findElement(by.xpath("../../div[contains(@class,'validation-error-area')]")); - try { - va.findElement(by.xpath("./div[2]")); - return va; - } catch (NoSuchElementException noDiv) { - // https://issues.jenkins-ci.org/browse/JENKINS-59605?focusedCommentId=377474&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-377474 - // There are known false-negatives in ATH so let's presume this is done and successful until the core is fixed. - return va; - } - }); - } + validationArea = control.waitFor().until(() -> { + // path to validation area is the parents sibling with class `validation-error-area` + String xpath = silent ? "../../div[contains(@class,'validation-error-area')]" : + "../../div[contains(@class,'validation-error-area--visible')]"; + + return element.findElement(by.xpath(xpath)); + }); } return new FormValidation(validationArea); @@ -114,8 +97,7 @@ public static FormValidation await(Control control, boolean silent) { public FormValidation(WebElement element) { List divs = element.findElements(by.xpath("div")); - // TODO the divs.get(1) part is old form validation, remove once not in current LTS line - WebElement outcome = divs.size() == 1 ? divs.get(0) : divs.get(1).findElement(by.xpath("div")); + WebElement outcome = divs.get(0); this.kind = extractKind(outcome); this.message = outcome.getText(); } diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/GlobalSecurityConfig.java b/src/main/java/org/jenkinsci/test/acceptance/po/GlobalSecurityConfig.java index 67bc66353f..368eea8015 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/GlobalSecurityConfig.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/GlobalSecurityConfig.java @@ -25,7 +25,6 @@ import java.lang.reflect.InvocationTargetException; import java.net.URL; -import java.util.Objects; import org.jenkinsci.test.acceptance.plugins.authorize_project.BuildAccessControl; import org.jenkinsci.test.acceptance.plugins.git_client.ssh_host_key_verification.SshHostKeyVerificationStrategy; import org.openqa.selenium.NoSuchElementException; @@ -97,15 +96,9 @@ private void selectMarkupFormatter(final String formatter) { } private T selectFromDropdownOrRadioGroup(Class type, String field) { - try { - WebElement option = findCaption(type, caption -> getElement(by.option(caption))); - option.click(); - return newInstance(type, this, "/" + field); - } catch (NoSuchElementException x) { // prior to https://github.com/jenkinsci/jenkins/pull/5417 - WebElement radio = findCaption(type, caption -> getElement(by.radioButton(caption))); - radio.click(); - return newInstance(type, this, Objects.requireNonNull(getPath(radio))); - } + WebElement option = findCaption(type, caption -> getElement(by.option(caption))); + option.click(); + return newInstance(type, this, "/" + field); } /** diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/Jenkins.java b/src/main/java/org/jenkinsci/test/acceptance/po/Jenkins.java index 1918fb6b21..0d8fefc1dc 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/Jenkins.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/Jenkins.java @@ -119,13 +119,6 @@ public void waitForStarted() { .until(() -> getVersionNumber() != null); } - /** - * Tells if Jenkins version under test is 1.X - */ - public boolean isJenkins1X() { - return getVersion().isOlderThan(new VersionNumber("2.0")); - } - /** * Access global configuration page. */ diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/JenkinsDatabaseSecurityRealm.java b/src/main/java/org/jenkinsci/test/acceptance/po/JenkinsDatabaseSecurityRealm.java index 1945be6a02..5b5d89540a 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/JenkinsDatabaseSecurityRealm.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/JenkinsDatabaseSecurityRealm.java @@ -23,7 +23,6 @@ */ package org.jenkinsci.test.acceptance.po; -import hudson.util.VersionNumber; import org.openqa.selenium.NoSuchElementException; @Describable({"Jenkins’ own user database", "Jenkins’s own user database"}) @@ -59,9 +58,6 @@ protected Signup(Jenkins context) { public Signup password(String pwd) { control(by.input("password1")).set(pwd); - if (getContext().getJenkins().getVersion().isOlderThan(new VersionNumber("2.128"))) { - control(by.input("password2")).set(pwd); - } return this; } diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/JenkinsLogger.java b/src/main/java/org/jenkinsci/test/acceptance/po/JenkinsLogger.java index 2f16df1f9e..60373b3cdc 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/JenkinsLogger.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/JenkinsLogger.java @@ -5,7 +5,6 @@ import java.util.Map.Entry; import java.util.logging.Level; import java.util.regex.Pattern; -import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebElement; /** @@ -24,11 +23,7 @@ public JenkinsLogger(Jenkins jenkins, String name) { public static JenkinsLogger create(Jenkins j, String name, Map levels) { j.visit("log/new"); j.find(by.path("/name")).sendKeys(name); - try { - j.clickButton("Create"); - } catch (NoSuchElementException e) { - j.clickButton("OK"); - } + j.clickButton("Create"); for (Entry e : levels.entrySet()) { j.clickButton("Add"); diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/Job.java b/src/main/java/org/jenkinsci/test/acceptance/po/Job.java index 4593312cdc..7cc4aaed3b 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/Job.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/Job.java @@ -389,12 +389,7 @@ public T addParameter(Class type) { } public void disable() { - try { - // Newer versions of Jenkins use a toggle switch with the active state as its label - check(find(by.id("toggle-switch-enable-disable-project"))); - } catch (org.openqa.selenium.NoSuchElementException exception) { - check("Disable this project"); - } + check(find(by.id("toggle-switch-enable-disable-project"))); } public int getNextBuildNumber() { diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/JobsMixIn.java b/src/main/java/org/jenkinsci/test/acceptance/po/JobsMixIn.java index f60f166dc5..34f47b8650 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/JobsMixIn.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/JobsMixIn.java @@ -99,26 +99,13 @@ public void copy(Job from, String to) { public void copy(String from, String to) { visit("newJob"); fillIn("from", from); - if (getJenkins().isJenkins1X()) { - // no radio buttons on Jenkins 2.X - choose("copy"); - } // There is a javascript magic bound to loss of focus on 'from' field that is a pain to duplicate through selenium // explicitly. Here, it is done so by setting 'to' afterwards. fillIn("name", to); clickButton("OK"); } - // Jenkins 1.x item type selection was by radio button. - final Finder finder1X = new Finder() { - @Override protected WebElement find(String caption) { - return outer.find(by.radioButton(caption)); - } - }; - - // Jenkins 2.0 introduced a new "new item" page, which listed - // the item types differently and did away with the radio buttons. - final Finder finder2X = new Finder() { + private final Finder finder = new Finder<>() { @Override protected WebElement find(String caption) { String normalizedCaption = caption.replace('.', '_'); return outer.find(by.css("li." + normalizedCaption)); @@ -126,6 +113,6 @@ public void copy(String from, String to) { }; private Finder getFinder() { - return getJenkins().isJenkins1X() ? finder1X : finder2X; + return finder; } } diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/LdapSecurityRealm.java b/src/main/java/org/jenkinsci/test/acceptance/po/LdapSecurityRealm.java index ef909488c8..b5faa05d4c 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/LdapSecurityRealm.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/LdapSecurityRealm.java @@ -4,14 +4,12 @@ import org.jenkinsci.test.acceptance.plugins.ldap.LdapDetails; import org.jenkinsci.test.acceptance.plugins.ldap.LdapEnvironmentVariable; import org.jenkinsci.test.acceptance.plugins.ldap.LdapGroupMembershipStrategy; -import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebElement; /** * SecurityRealm for ldap plugin. * * @author Michael Prankl - * @see org.jenkinsci.test.acceptance.po.LdapSecurityRealm_Pre1_10 if you want to test versions of the plugin older than 1.10 */ @Describable("LDAP") public class LdapSecurityRealm extends SecurityRealm { @@ -43,10 +41,6 @@ public class LdapSecurityRealm extends Se */ private final Control mailAddressAttributeName = control("configurations/mailAddressAttributeName" /* >= 1.16 */, "mailAddressAttributeName"); - /** - * For changes in GUI in version 1.16 - */ - private final boolean sinceVersion116 = isVersionEqualsOrGreater116(); protected final Control advanced = control("advanced-button" /* >= 1.16 only */); public LdapSecurityRealm(GlobalSecurityConfig context, String path) { @@ -54,17 +48,6 @@ public LdapSecurityRealm(GlobalSecurityConfig context, String path) { this.context = context; } - private boolean isVersionEqualsOrGreater116() { - boolean isVersion116 = true; - try { - control("configurations/server").resolve(); - } catch (NoSuchElementException e) { - isVersion116 = false; - } - - return isVersion116; - } - private T useGroupMembershipStrategy(Class type) { WebElement radio = findCaption(type, new Finder() { @Override @@ -90,9 +73,7 @@ public void configure(LdapDetails ldapDetails) { groupSearchBase.set(ldapDetails.getGroupSearchBase()); groupSearchFilter.set(ldapDetails.getGroupSearchFilter()); configureGroupMembership(ldapDetails); - if (this.sinceVersion116) { - advanced.click(); - } + advanced.click(); disableLdapEmailResolver.check(ldapDetails.isDisableLdapEmailResolver()); if (ldapDetails.isEnableCache()) { enableCache.check(true); diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/LdapSecurityRealm_Pre1_10.java b/src/main/java/org/jenkinsci/test/acceptance/po/LdapSecurityRealm_Pre1_10.java deleted file mode 100644 index 62be064cc0..0000000000 --- a/src/main/java/org/jenkinsci/test/acceptance/po/LdapSecurityRealm_Pre1_10.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.jenkinsci.test.acceptance.po; - -import org.jenkinsci.test.acceptance.plugins.ldap.LdapDetails; - -/** - * Ldap security realm for ldap plugin prior to version 1.10. - * - * @author Michael Prankl - * @deprecated only use this if you are really testing against a ldap plugin version older than 1.10 - */ -@Deprecated -@Describable("LDAP") -public class LdapSecurityRealm_Pre1_10 extends LdapSecurityRealm { - - public LdapSecurityRealm_Pre1_10(GlobalSecurityConfig context, String path) { - super(context, path); - } - - @Override - protected void configureGroupMembership(LdapDetails ldapDetails) { - groupMembershipFilter.set(ldapDetails.getGroupMembershipFilter()); - } -} diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/PasswordParameter.java b/src/main/java/org/jenkinsci/test/acceptance/po/PasswordParameter.java index 470dafcf1e..0e69e0b829 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/PasswordParameter.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/PasswordParameter.java @@ -1,7 +1,5 @@ package org.jenkinsci.test.acceptance.po; -import hudson.util.VersionNumber; - @Describable("Password Parameter") public class PasswordParameter extends Parameter { @@ -14,15 +12,9 @@ public void fillWith(Object v) { control("value").set(v.toString()); } - //since JENKINS-61808 and jenkins 2.236 the path for "Default" input changed @Override public Parameter setDefault(String value) { - if (injector.getInstance(Jenkins.class).getVersion().isOlderThan(new VersionNumber("2.236"))){ - return super.setDefault(value); - } else { - //the control path changed after JENKINS-61808 and 2.236 - control("defaultValueAsSecret").set(value); - return this; - } + control("defaultValueAsSecret").set(value); + return this; } } diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/SlavesMixIn.java b/src/main/java/org/jenkinsci/test/acceptance/po/SlavesMixIn.java index 25b02876da..7580df80f8 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/SlavesMixIn.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/SlavesMixIn.java @@ -2,7 +2,6 @@ import java.io.File; import org.jenkinsci.test.acceptance.selenium.Scroller; -import org.openqa.selenium.NoSuchElementException; /** * Mix-in for slaves. @@ -33,11 +32,7 @@ public S create(Class type, String name) { find(by.input("name")).sendKeys(name); find(by.radioButton("Permanent Agent")).click(); - try { - clickButton("Create"); - } catch (NoSuchElementException e) { - clickButton("OK"); - } + clickButton("Create"); // This form submission will drop us on the configure page S s = newInstance(type, jenkins, name); diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/ToolInstallation.java b/src/main/java/org/jenkinsci/test/acceptance/po/ToolInstallation.java index d75c7910a5..66222dbd29 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/ToolInstallation.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/ToolInstallation.java @@ -23,7 +23,6 @@ */ package org.jenkinsci.test.acceptance.po; -import hudson.util.VersionNumber; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -126,9 +125,7 @@ public ToolInstallation(Jenkins jenkins, String path) { } protected static ConfigurablePageObject getPageObject(Jenkins jenkins) { - return jenkins.getVersion().isOlderThan(new VersionNumber("2")) - ? new JenkinsConfig(jenkins) - : new GlobalToolConfig(jenkins); + return new GlobalToolConfig(jenkins); } @Override diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/TopLevelItem.java b/src/main/java/org/jenkinsci/test/acceptance/po/TopLevelItem.java index 9e43343904..2fc3428b2e 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/TopLevelItem.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/TopLevelItem.java @@ -2,7 +2,6 @@ import com.google.inject.Injector; import edu.umd.cs.findbugs.annotations.CheckReturnValue; -import hudson.util.VersionNumber; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; @@ -43,19 +42,11 @@ public TopLevelItem(PageObject context, URL url, String name) { @CheckReturnValue public T renameTo(final String newName) { String oldName = name; - // Change in behaviour of the rename is in versions > 2.110 see JENKINS-22936 - if (getJenkins().getVersion().isOlderThan(new VersionNumber("2.110"))) { - configure(); - control("/name").set(newName); - save(); - waitFor(by.button("Yes")).click(); - } else { - open(); - control(by.href(url.getPath() + "confirm-rename")).click(); - WebElement renameButton = waitFor(by.button("Rename"), 5); - control(by.name("newName")).set(newName); - renameButton.click(); - } + open(); + control(by.href(url.getPath() + "confirm-rename")).click(); + WebElement renameButton = waitFor(by.button("Rename"), 5); + control(by.name("newName")).set(newName); + renameButton.click(); try { return (T) newInstance(getClass(), injector, new URL(url.toExternalForm().replace(oldName, newName)), newName); diff --git a/src/main/java/org/jenkinsci/test/acceptance/po/ViewsMixIn.java b/src/main/java/org/jenkinsci/test/acceptance/po/ViewsMixIn.java index 0df0dc1797..2d69d68452 100644 --- a/src/main/java/org/jenkinsci/test/acceptance/po/ViewsMixIn.java +++ b/src/main/java/org/jenkinsci/test/acceptance/po/ViewsMixIn.java @@ -1,7 +1,6 @@ package org.jenkinsci.test.acceptance.po; import java.time.Duration; -import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebElement; /** @@ -38,11 +37,7 @@ public T create(final Class type, String name) { fillIn("name", name); - try { - clickButton("Create"); - } catch (NoSuchElementException e) { - clickButton("OK"); - } + clickButton("Create"); return newInstance(type, injector, url("view/%s/", name)); } diff --git a/src/test/java/core/FreestyleJobTest.java b/src/test/java/core/FreestyleJobTest.java index b22af46562..b6a844aea2 100644 --- a/src/test/java/core/FreestyleJobTest.java +++ b/src/test/java/core/FreestyleJobTest.java @@ -12,7 +12,6 @@ import static org.jenkinsci.test.acceptance.Matchers.pageObjectExists; import static org.junit.Assert.assertTrue; -import hudson.util.VersionNumber; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; @@ -41,7 +40,6 @@ import org.junit.experimental.categories.Category; import org.jvnet.hudson.test.Issue; import org.openqa.selenium.By; -import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebElement; public class FreestyleJobTest extends AbstractJUnitTest { @@ -169,11 +167,7 @@ public void discardBuilds() { FreeStyleJob j = jenkins.jobs.create(FreeStyleJob.class); j.configure(); - try { - check("Discard old builds"); - } catch (NoSuchElementException x) { // 1.636- - check("Discard Old Builds"); - } + check("Discard old builds"); j.control(by.name("_.numToKeepStr")).set(1); j.save(); @@ -205,11 +199,7 @@ public void doNotDiscardSuccessfulBuilds() { FreeStyleJob j = jenkins.jobs.create(FreeStyleJob.class); j.configure(); - try { - check("Discard old builds"); - } catch (NoSuchElementException x) { // 1.636- - check("Discard Old Builds"); - } + check("Discard old builds"); j.control(by.name("_.numToKeepStr")).set(1); ShellBuildStep shellBuildStep = j.addShellStep("exit 0"); j.save(); @@ -304,8 +294,7 @@ public void showErrorSavingConfig() { trigger.spec.set("not_a_time"); clickButton("Apply"); - String errorElementCSS = jenkins.getVersion().isOlderThan(new VersionNumber("2.235")) ? "#error-description pre" : ".validation-error-area .error"; - By error = by.css(errorElementCSS); + By error = by.css(".validation-error-area .error"); assertThat(waitFor(error).getText(), containsString("Invalid input: \"not_a_time\"")); closeDialog(); @@ -320,12 +309,7 @@ public void showErrorSavingConfig() { } private void closeDialog() { - try { - clickButton("Close"); - } catch (NoSuchElementException x) { - // before https://github.com/jenkinsci/jenkins/pull/8394 - clickLink("Close"); - } + clickButton("Close"); } @Test diff --git a/src/test/java/core/InstallWizardTest.java b/src/test/java/core/InstallWizardTest.java index 7f14ced467..9fb7fc62b3 100644 --- a/src/test/java/core/InstallWizardTest.java +++ b/src/test/java/core/InstallWizardTest.java @@ -27,7 +27,6 @@ import static org.jenkinsci.test.acceptance.Matchers.loggedInAs; import com.google.inject.Inject; -import hudson.util.VersionNumber; import java.io.IOException; import org.jenkinsci.test.acceptance.controller.JenkinsController; import org.jenkinsci.test.acceptance.junit.AbstractJUnitTest; @@ -70,9 +69,7 @@ public void wizardInstallSuggestedTest() throws IOException { createAdmin.createAdminUser(USERNAME, PASSWORD, FULL_NAME, EMAIL); createAdmin.shouldCreateTheUserSuccessfully(); - if(jenkins.getVersion().isNewerThan(new VersionNumber("2.118"))) { - createAdmin.confirmURLSettings(); - } + createAdmin.confirmURLSettings(); createAdmin.wizardShouldFinishSuccessfully(); // Check that the new user is logged in @@ -105,9 +102,7 @@ public void wizardInstallCustomPluginsTest() throws IOException { createAdmin.createAdminUser(USERNAME, PASSWORD, FULL_NAME, EMAIL); createAdmin.shouldCreateTheUserSuccessfully(); - if(jenkins.getVersion().isNewerThan(new VersionNumber("2.118"))) { - createAdmin.confirmURLSettings(); - } + createAdmin.confirmURLSettings(); createAdmin.wizardShouldFinishSuccessfully(); // Check that the new user is logged in diff --git a/src/test/java/core/PluginManagerTest.java b/src/test/java/core/PluginManagerTest.java index 3a76872736..f7ecf78019 100644 --- a/src/test/java/core/PluginManagerTest.java +++ b/src/test/java/core/PluginManagerTest.java @@ -28,7 +28,6 @@ import java.util.concurrent.ExecutionException; import org.jenkinsci.test.acceptance.junit.AbstractJUnitTest; import org.jenkinsci.test.acceptance.junit.WithPlugins; -import org.jenkinsci.test.acceptance.po.CapybaraPortingLayerImpl; import org.jenkinsci.test.acceptance.po.PluginManager; import org.junit.Test; import org.jvnet.hudson.test.Issue; @@ -48,16 +47,9 @@ public void reproduce() throws Exception { @WithPlugins("matrix-auth") public void uninstall_plugin() throws InterruptedException, ExecutionException { jenkins.getPluginManager().visit("installed"); - try { - WebElement uninstallButton = find(by.xpath(".//button[./@data-href = 'plugin/matrix-auth/doUninstall']")); - uninstallButton.click(); - waitFor(by.button("Yes")); - } catch (NoSuchElementException te) { - // TODO remove this handling when Jenkins 2.415 is the lowest we support - WebElement form = find(by.action("plugin/matrix-auth/uninstall")); - form.submit(); - waitFor(form).until(CapybaraPortingLayerImpl::isStale); - } + WebElement uninstallButton = find(by.xpath(".//button[./@data-href = 'plugin/matrix-auth/doUninstall']")); + uninstallButton.click(); + waitFor(by.button("Yes")); clickButton("Yes"); jenkins.restart(); jenkins.getPluginManager().visit("installed"); diff --git a/src/test/java/plugins/JavadocPluginTest.java b/src/test/java/plugins/JavadocPluginTest.java index 92d0c3e76c..eb311c12f5 100644 --- a/src/test/java/plugins/JavadocPluginTest.java +++ b/src/test/java/plugins/JavadocPluginTest.java @@ -15,8 +15,6 @@ import org.jenkinsci.test.acceptance.po.MatrixConfiguration; import org.jenkinsci.test.acceptance.po.MatrixProject; import org.junit.Test; -import org.openqa.selenium.NoSuchElementException; -import org.openqa.selenium.NoSuchFrameException; @WithPlugins("javadoc") public class JavadocPluginTest extends AbstractJUnitTest { @@ -88,31 +86,9 @@ private void assertJavadoc(Job job) { job.open(); find(by.link(JAVADOC_ACTION)).click(); - /* - Why do we check in such way? + find(by.href("index-all.html")).click(); + find(by.href("com/mycompany/app/package-summary.html")).click(); - The java version of the Jenkins under test could be different that the one in use by this code, the ATH code. - See: https://github.com/jenkinsci/acceptance-test-harness/blob/39cbea43b73d32a0912d613a41e08ba9b54aad1d/src/main/java/org/jenkinsci/test/acceptance/controller/LocalController.java#L190 - - In addition, the way javadoc is generated depends on the java version and the number of packages generated, one - or more packages. - See: https://issues.jenkins-ci.org/browse/JENKINS-32619?focusedCommentId=311819&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-311819 - - So even though it's not the most refined way to check the right generation of the javadoc, this way doesn't - need to call a groovy script for checking the java version neither checking the number of packages generated. - */ - - try { - // Former behavior, javadoc generating frames and plugin without redirection - driver.switchTo().frame("classFrame"); - } catch (NoSuchFrameException e) { - try { - // With Java11 a link to the package-summary is shown, no frames - find(by.partialLinkText("package-summary.html")).click(); - } catch (NoSuchElementException ignored) { - } - } - - assertThat(driver, hasContent("com.mycompany.app")); + assertThat(driver, hasContent("com.mycompany.app")); } } diff --git a/src/test/java/plugins/MatrixPluginTest.java b/src/test/java/plugins/MatrixPluginTest.java index 785971a69e..ac8aa08bb1 100644 --- a/src/test/java/plugins/MatrixPluginTest.java +++ b/src/test/java/plugins/MatrixPluginTest.java @@ -6,7 +6,6 @@ import static org.hamcrest.Matchers.not; import com.google.inject.Inject; -import hudson.util.VersionNumber; import java.util.Collections; import java.util.List; import org.jenkinsci.test.acceptance.Matcher; @@ -168,15 +167,8 @@ public void run_configurations_on_with_a_given_label() throws Exception { job.configure(); LabelAxis a = job.addAxis(LabelAxis.class); - String builtInNodeName; - String builtInNodeDescription; - if (jenkins.getVersion().isOlderThan(new VersionNumber("2.307"))) { - builtInNodeName = "master"; - builtInNodeDescription = "master"; - } else { - builtInNodeName = "built-in"; - builtInNodeDescription = "the built-in node"; - } + String builtInNodeName = "built-in"; + String builtInNodeDescription = "the built-in node"; a.select(builtInNodeName); a.select("label1"); job.save(); diff --git a/src/test/java/plugins/SshSlavesPluginTest.java b/src/test/java/plugins/SshSlavesPluginTest.java index 49c0bda605..f494ee4845 100644 --- a/src/test/java/plugins/SshSlavesPluginTest.java +++ b/src/test/java/plugins/SshSlavesPluginTest.java @@ -30,7 +30,6 @@ import static org.junit.Assert.fail; import com.google.inject.Inject; -import hudson.util.VersionNumber; import java.time.Duration; import java.util.concurrent.Callable; import org.jenkinsci.test.acceptance.docker.DockerContainerHolder; @@ -132,11 +131,12 @@ public void newSlaveWithExistingCredential() throws Exception { c.setConfigUrl(href); verifyValueForCredential(c, sc.username, username); - // See https://jenkins.io/doc/developer/security/secrets/#secrets-and-configuration-forms, available from Jenkins 2.171 - if (jenkins.getVersion().isNewerThan(new VersionNumber("2.170"))) { - verifyUnexpectedValueForCredential("Credentials in plain text should not be accessible from Web UI", - c, sc.selectEnterDirectly().privateKey, privateKey); - } + // See https://jenkins.io/doc/developer/security/secrets/#secrets-and-configuration-forms + verifyUnexpectedValueForCredential( + "Credentials in plain text should not be accessible from Web UI", + c, + sc.selectEnterDirectly().privateKey, + privateKey); // Just to make sure the dumb slave is set up properly, we should seed it // with a FS root and executors diff --git a/src/test/java/plugins/WorkflowMultibranchTest.java b/src/test/java/plugins/WorkflowMultibranchTest.java index 411181ac37..28772b84a0 100644 --- a/src/test/java/plugins/WorkflowMultibranchTest.java +++ b/src/test/java/plugins/WorkflowMultibranchTest.java @@ -1,7 +1,6 @@ package plugins; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; import static org.jenkinsci.test.acceptance.Matchers.hasAction; @@ -62,7 +61,7 @@ private void configureJobWithGithubBranchSource(final WorkflowMultiBranchJob job } private void assertBranchIndexing(final WorkflowMultiBranchJob job) { - assertThat(job, anyOf(/* 1.x */hasAction("Branch Indexing"), /* 2.x */hasAction("Scan Repository"), /* 2.1.0 */hasAction("Scan Repository Now"))); + assertThat(job, hasAction("Scan Repository Now")); final String branchIndexingLog = job.getBranchIndexingLog();