This is an automated email from the ASF dual-hosted git repository.
benjobs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git
The following commit(s) were added to refs/heads/dev by this push:
new cf433de57 [Feature-3862] Add Flink On Yarn Clusters e2e test (#3868)
cf433de57 is described below
commit cf433de57806ab3f8f3f25c9c168b09bf0e9a239
Author: xiangzihao <[email protected]>
AuthorDate: Tue Jul 16 14:09:05 2024 +0800
[Feature-3862] Add Flink On Yarn Clusters e2e test (#3868)
* add feature 3862
---
.github/workflows/e2e.yml | 6 +
.../src/views/flink/cluster/Add.vue | 6 +-
streampark-e2e/pom.xml | 4 +-
.../e2e/cases/Flink116OnYarnClusterDeployTest.java | 158 +++++++++++++++++++++
.../e2e/cases/Flink117OnYarnClusterDeployTest.java | 158 +++++++++++++++++++++
.../e2e/cases/Flink118OnYarnClusterDeployTest.java | 158 +++++++++++++++++++++
.../org/apache/streampark/e2e/pages/LoginPage.java | 8 +-
.../streampark/e2e/pages/common/CommonFactory.java | 63 ++++++++
.../streampark/e2e/pages/common/Constants.java | 4 +
.../streampark/e2e/pages/common/NavBarPage.java | 8 +-
.../e2e/pages/flink/ApacheFlinkPage.java | 15 +-
.../streampark/e2e/pages/flink/FlinkHomePage.java | 10 +-
.../pages/flink/applications/ApplicationForm.java | 5 +-
.../pages/flink/applications/ApplicationsPage.java | 31 ++--
.../pages/flink/applications/FlinkSQLEditor.java | 6 +-
.../applications/FlinkSQLYarnApplicationForm.java | 5 +-
.../pages/flink/clusters/ClusterDetailForm.java | 81 +++++++++++
.../CommonForm.java} | 45 ++++--
.../pages/flink/clusters/FlinkClustersPage.java | 151 ++++++++++++++++++++
.../e2e/pages/flink/clusters/YarnSessionForm.java | 72 ++++++++++
.../e2e/pages/resource/ProjectsPage.java | 17 ++-
.../e2e/pages/resource/ResourcePage.java | 9 +-
.../streampark/e2e/pages/resource/UploadsPage.java | 16 +--
.../e2e/pages/resource/VariablesPage.java | 10 +-
.../e2e/pages/system/MemberManagementPage.java | 14 +-
.../e2e/pages/system/RoleManagementPage.java | 7 +-
.../streampark/e2e/pages/system/SystemPage.java | 13 +-
.../e2e/pages/system/TeamManagementPage.java | 10 +-
.../e2e/pages/system/TokenManagementPage.java | 10 +-
.../e2e/pages/system/UserManagementPage.java | 10 +-
.../resources/docker/flink-1.16-on-yarn/Dockerfile | 1 +
.../resources/docker/flink-1.17-on-yarn/Dockerfile | 1 +
.../resources/docker/flink-1.18-on-yarn/Dockerfile | 1 +
33 files changed, 991 insertions(+), 122 deletions(-)
diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml
index 5374fc941..ec81ff7dd 100644
--- a/.github/workflows/e2e.yml
+++ b/.github/workflows/e2e.yml
@@ -126,6 +126,12 @@ jobs:
class: org.apache.streampark.e2e.cases.TeamManagementTest
- name: MemberManagementTest
class: org.apache.streampark.e2e.cases.MemberManagementTest
+ - name: Flink116OnYarnClusterDeployTest
+ class:
org.apache.streampark.e2e.cases.Flink116OnYarnClusterDeployTest
+ - name: Flink117OnYarnClusterDeployTest
+ class:
org.apache.streampark.e2e.cases.Flink117OnYarnClusterDeployTest
+ - name: Flink118OnYarnClusterDeployTest
+ class:
org.apache.streampark.e2e.cases.Flink118OnYarnClusterDeployTest
- name: FlinkSQL116OnYarnTest
class: org.apache.streampark.e2e.cases.FlinkSQL116OnYarnTest
- name: FlinkSQL117OnYarnTest
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/cluster/Add.vue
b/streampark-console/streampark-console-webapp/src/views/flink/cluster/Add.vue
index a17cc09f3..c3224a03c 100644
---
a/streampark-console/streampark-console-webapp/src/views/flink/cluster/Add.vue
+++
b/streampark-console/streampark-console-webapp/src/views/flink/cluster/Add.vue
@@ -53,8 +53,8 @@
const status = parseInt(res.status);
if (status === 0) {
const resp = await fetchCreateCluster(params);
- if (resp.data.code == 200) {
- Swal.fire({
+ if (resp) {
+ await Swal.fire({
icon: 'success',
title: values.clusterName.concat(
t('setting.flinkCluster.operateMessage.createFlinkSessionClusterSuccessful'),
@@ -64,7 +64,7 @@
});
go('/flink/cluster');
} else {
- Swal.fire(
+ await Swal.fire(
'Failed',
t('setting.flinkCluster.operateMessage.createFlinkSessionClusterFailed'),
'error',
diff --git a/streampark-e2e/pom.xml b/streampark-e2e/pom.xml
index 6999ce384..7030fc961 100644
--- a/streampark-e2e/pom.xml
+++ b/streampark-e2e/pom.xml
@@ -31,8 +31,8 @@
</modules>
<properties>
- <maven.compiler.source>8</maven.compiler.source>
- <maven.compiler.target>8</maven.compiler.target>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>5.8.1</junit.version>
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/cases/Flink116OnYarnClusterDeployTest.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/cases/Flink116OnYarnClusterDeployTest.java
new file mode 100644
index 000000000..4493ced4e
--- /dev/null
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/cases/Flink116OnYarnClusterDeployTest.java
@@ -0,0 +1,158 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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 org.apache.streampark.e2e.cases;
+
+import org.apache.streampark.e2e.core.StreamPark;
+import org.apache.streampark.e2e.pages.LoginPage;
+import org.apache.streampark.e2e.pages.common.Constants;
+import org.apache.streampark.e2e.pages.flink.ApacheFlinkPage;
+import org.apache.streampark.e2e.pages.flink.FlinkHomePage;
+import org.apache.streampark.e2e.pages.flink.clusters.ClusterDetailForm;
+import org.apache.streampark.e2e.pages.flink.clusters.FlinkClustersPage;
+import org.apache.streampark.e2e.pages.flink.clusters.YarnSessionForm;
+
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.remote.RemoteWebDriver;
+import org.testcontainers.shaded.org.awaitility.Awaitility;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+@StreamPark(composeFiles = "docker/flink-1.16-on-yarn/docker-compose.yaml")
+public class Flink116OnYarnClusterDeployTest {
+
+ private static RemoteWebDriver browser;
+
+ private static final String userName = "admin";
+
+ private static final String password = "streampark";
+
+ private static final String teamName = "default";
+
+ private static final String flinkName = "flink-1.16.3";
+
+ private static final String flinkHome = "/flink-1.16.3";
+
+ private static final String flinkDescription = "description test";
+
+ private static final String flinkClusterName = "flink_1.16.3_cluster_e2e";
+
+ private static final String flinkClusterNameEdited =
"flink_1.16.3_cluster_e2e_edited";
+
+ private static final ClusterDetailForm.ExecutionMode executionMode =
ClusterDetailForm.ExecutionMode.YARN_SESSION;
+
+ @BeforeAll
+ public static void setup() {
+ FlinkHomePage flinkHomePage = new LoginPage(browser)
+ .login(userName, password, teamName)
+ .goToNav(ApacheFlinkPage.class)
+ .goToTab(FlinkHomePage.class);
+
+ flinkHomePage.createFlinkHome(flinkName, flinkHome, flinkDescription);
+
+ flinkHomePage.goToNav(ApacheFlinkPage.class)
+ .goToTab(FlinkClustersPage.class);
+ }
+
+ @Test
+ @Order(10)
+ public void testCreateFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.createFlinkCluster()
+ .<YarnSessionForm>addCluster(executionMode)
+ .resolveOrder(YarnSessionForm.ResolveOrder.CHILD_FIRST)
+ .clusterName(flinkClusterName)
+ .flinkVersion(flinkName)
+ .submit();
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> assertThat(flinkClustersPage.flinkClusterList())
+ .as("Flink clusters list should contain newly-created
application")
+ .extracting(WebElement::getText)
+ .anyMatch(it -> it.contains(flinkClusterName)));
+ }
+
+ @Test
+ @Order(20)
+ public void testEditFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.editFlinkCluster(flinkClusterName)
+ .<YarnSessionForm>addCluster(executionMode)
+ .clusterName(flinkClusterNameEdited)
+ .submit();
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> assertThat(flinkClustersPage.flinkClusterList())
+ .as("Flink clusters list should contain edited
application")
+ .extracting(WebElement::getText)
+ .anyMatch(it -> it.contains(flinkClusterNameEdited)));
+ }
+
+ @Test
+ @Order(30)
+ public void testStartFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.startFlinkCluster(flinkClusterNameEdited);
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> assertThat(flinkClustersPage.flinkClusterList())
+ .as("Flink clusters list should contain running
application")
+ .extracting(WebElement::getText)
+ .anyMatch(it -> it.contains("RUNNING")));
+ }
+
+ @Test
+ @Order(40)
+ public void testStopFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.stopFlinkCluster(flinkClusterNameEdited);
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> assertThat(flinkClustersPage.flinkClusterList())
+ .as("Flink clusters list should contain canceled
application")
+ .extracting(WebElement::getText)
+ .anyMatch(it -> it.contains("CANCELED")));
+ }
+
+ @Test
+ @Order(50)
+ public void testDeleteFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.deleteFlinkCluster(flinkClusterNameEdited);
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> {
+ browser.navigate().refresh();
+ Thread.sleep(Constants.DEFAULT_SLEEP_MILLISECONDS);
+ assertThat(flinkClustersPage.flinkClusterList())
+ .noneMatch(it ->
it.getText().contains(flinkClusterNameEdited));
+ });
+ }
+}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/cases/Flink117OnYarnClusterDeployTest.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/cases/Flink117OnYarnClusterDeployTest.java
new file mode 100644
index 000000000..1e336ea8e
--- /dev/null
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/cases/Flink117OnYarnClusterDeployTest.java
@@ -0,0 +1,158 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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 org.apache.streampark.e2e.cases;
+
+import org.apache.streampark.e2e.core.StreamPark;
+import org.apache.streampark.e2e.pages.LoginPage;
+import org.apache.streampark.e2e.pages.common.Constants;
+import org.apache.streampark.e2e.pages.flink.ApacheFlinkPage;
+import org.apache.streampark.e2e.pages.flink.FlinkHomePage;
+import org.apache.streampark.e2e.pages.flink.clusters.ClusterDetailForm;
+import org.apache.streampark.e2e.pages.flink.clusters.FlinkClustersPage;
+import org.apache.streampark.e2e.pages.flink.clusters.YarnSessionForm;
+
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.remote.RemoteWebDriver;
+import org.testcontainers.shaded.org.awaitility.Awaitility;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+@StreamPark(composeFiles = "docker/flink-1.17-on-yarn/docker-compose.yaml")
+public class Flink117OnYarnClusterDeployTest {
+
+ private static RemoteWebDriver browser;
+
+ private static final String userName = "admin";
+
+ private static final String password = "streampark";
+
+ private static final String teamName = "default";
+
+ private static final String flinkName = "flink-1.17.2";
+
+ private static final String flinkHome = "/flink-1.17.2";
+
+ private static final String flinkDescription = "description test";
+
+ private static final String flinkClusterName = "flink_1.17.2_cluster_e2e";
+
+ private static final String flinkClusterNameEdited =
"flink_1.17.2_cluster_e2e_edited";
+
+ private static final ClusterDetailForm.ExecutionMode executionMode =
ClusterDetailForm.ExecutionMode.YARN_SESSION;
+
+ @BeforeAll
+ public static void setup() {
+ FlinkHomePage flinkHomePage = new LoginPage(browser)
+ .login(userName, password, teamName)
+ .goToNav(ApacheFlinkPage.class)
+ .goToTab(FlinkHomePage.class);
+
+ flinkHomePage.createFlinkHome(flinkName, flinkHome, flinkDescription);
+
+ flinkHomePage.goToNav(ApacheFlinkPage.class)
+ .goToTab(FlinkClustersPage.class);
+ }
+
+ @Test
+ @Order(10)
+ public void testCreateFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.createFlinkCluster()
+ .<YarnSessionForm>addCluster(executionMode)
+ .resolveOrder(YarnSessionForm.ResolveOrder.CHILD_FIRST)
+ .clusterName(flinkClusterName)
+ .flinkVersion(flinkName)
+ .submit();
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> assertThat(flinkClustersPage.flinkClusterList())
+ .as("Flink clusters list should contain newly-created
application")
+ .extracting(WebElement::getText)
+ .anyMatch(it -> it.contains(flinkClusterName)));
+ }
+
+ @Test
+ @Order(20)
+ public void testEditFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.editFlinkCluster(flinkClusterName)
+ .<YarnSessionForm>addCluster(executionMode)
+ .clusterName(flinkClusterNameEdited)
+ .submit();
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> assertThat(flinkClustersPage.flinkClusterList())
+ .as("Flink clusters list should contain edited
application")
+ .extracting(WebElement::getText)
+ .anyMatch(it -> it.contains(flinkClusterNameEdited)));
+ }
+
+ @Test
+ @Order(30)
+ public void testStartFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.startFlinkCluster(flinkClusterNameEdited);
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> assertThat(flinkClustersPage.flinkClusterList())
+ .as("Flink clusters list should contain running
application")
+ .extracting(WebElement::getText)
+ .anyMatch(it -> it.contains("RUNNING")));
+ }
+
+ @Test
+ @Order(40)
+ public void testStopFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.stopFlinkCluster(flinkClusterNameEdited);
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> assertThat(flinkClustersPage.flinkClusterList())
+ .as("Flink clusters list should contain canceled
application")
+ .extracting(WebElement::getText)
+ .anyMatch(it -> it.contains("CANCELED")));
+ }
+
+ @Test
+ @Order(50)
+ public void testDeleteFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.deleteFlinkCluster(flinkClusterNameEdited);
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> {
+ browser.navigate().refresh();
+ Thread.sleep(Constants.DEFAULT_SLEEP_MILLISECONDS);
+ assertThat(flinkClustersPage.flinkClusterList())
+ .noneMatch(it ->
it.getText().contains(flinkClusterNameEdited));
+ });
+ }
+}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/cases/Flink118OnYarnClusterDeployTest.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/cases/Flink118OnYarnClusterDeployTest.java
new file mode 100644
index 000000000..cd8ab4e20
--- /dev/null
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/cases/Flink118OnYarnClusterDeployTest.java
@@ -0,0 +1,158 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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 org.apache.streampark.e2e.cases;
+
+import org.apache.streampark.e2e.core.StreamPark;
+import org.apache.streampark.e2e.pages.LoginPage;
+import org.apache.streampark.e2e.pages.common.Constants;
+import org.apache.streampark.e2e.pages.flink.ApacheFlinkPage;
+import org.apache.streampark.e2e.pages.flink.FlinkHomePage;
+import org.apache.streampark.e2e.pages.flink.clusters.ClusterDetailForm;
+import org.apache.streampark.e2e.pages.flink.clusters.FlinkClustersPage;
+import org.apache.streampark.e2e.pages.flink.clusters.YarnSessionForm;
+
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.remote.RemoteWebDriver;
+import org.testcontainers.shaded.org.awaitility.Awaitility;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+@StreamPark(composeFiles = "docker/flink-1.18-on-yarn/docker-compose.yaml")
+public class Flink118OnYarnClusterDeployTest {
+
+ private static RemoteWebDriver browser;
+
+ private static final String userName = "admin";
+
+ private static final String password = "streampark";
+
+ private static final String teamName = "default";
+
+ private static final String flinkName = "flink-1.18.1";
+
+ private static final String flinkHome = "/flink-1.18.1";
+
+ private static final String flinkDescription = "description test";
+
+ private static final String flinkClusterName = "flink_1.18.1_cluster_e2e";
+
+ private static final String flinkClusterNameEdited =
"flink_1.18.1_cluster_e2e_edited";
+
+ private static final ClusterDetailForm.ExecutionMode executionMode =
ClusterDetailForm.ExecutionMode.YARN_SESSION;
+
+ @BeforeAll
+ public static void setup() {
+ FlinkHomePage flinkHomePage = new LoginPage(browser)
+ .login(userName, password, teamName)
+ .goToNav(ApacheFlinkPage.class)
+ .goToTab(FlinkHomePage.class);
+
+ flinkHomePage.createFlinkHome(flinkName, flinkHome, flinkDescription);
+
+ flinkHomePage.goToNav(ApacheFlinkPage.class)
+ .goToTab(FlinkClustersPage.class);
+ }
+
+ @Test
+ @Order(10)
+ public void testCreateFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.createFlinkCluster()
+ .<YarnSessionForm>addCluster(executionMode)
+ .resolveOrder(YarnSessionForm.ResolveOrder.CHILD_FIRST)
+ .clusterName(flinkClusterName)
+ .flinkVersion(flinkName)
+ .submit();
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> assertThat(flinkClustersPage.flinkClusterList())
+ .as("Flink clusters list should contain newly-created
application")
+ .extracting(WebElement::getText)
+ .anyMatch(it -> it.contains(flinkClusterName)));
+ }
+
+ @Test
+ @Order(20)
+ public void testEditFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.editFlinkCluster(flinkClusterName)
+ .<YarnSessionForm>addCluster(executionMode)
+ .clusterName(flinkClusterNameEdited)
+ .submit();
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> assertThat(flinkClustersPage.flinkClusterList())
+ .as("Flink clusters list should contain edited
application")
+ .extracting(WebElement::getText)
+ .anyMatch(it -> it.contains(flinkClusterNameEdited)));
+ }
+
+ @Test
+ @Order(30)
+ public void testStartFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.startFlinkCluster(flinkClusterNameEdited);
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> assertThat(flinkClustersPage.flinkClusterList())
+ .as("Flink clusters list should contain running
application")
+ .extracting(WebElement::getText)
+ .anyMatch(it -> it.contains("RUNNING")));
+ }
+
+ @Test
+ @Order(40)
+ public void testStopFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.stopFlinkCluster(flinkClusterNameEdited);
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> assertThat(flinkClustersPage.flinkClusterList())
+ .as("Flink clusters list should contain canceled
application")
+ .extracting(WebElement::getText)
+ .anyMatch(it -> it.contains("CANCELED")));
+ }
+
+ @Test
+ @Order(50)
+ public void testDeleteFlinkCluster() {
+ final FlinkClustersPage flinkClustersPage = new
FlinkClustersPage(browser);
+
+ flinkClustersPage.deleteFlinkCluster(flinkClusterNameEdited);
+
+ Awaitility.await()
+ .untilAsserted(
+ () -> {
+ browser.navigate().refresh();
+ Thread.sleep(Constants.DEFAULT_SLEEP_MILLISECONDS);
+ assertThat(flinkClustersPage.flinkClusterList())
+ .noneMatch(it ->
it.getText().contains(flinkClusterNameEdited));
+ });
+ }
+}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/LoginPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/LoginPage.java
index 07a715c4d..b58b4b0bb 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/LoginPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/LoginPage.java
@@ -17,6 +17,7 @@
package org.apache.streampark.e2e.pages;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import lombok.Getter;
@@ -30,7 +31,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
@Getter
@@ -54,7 +54,7 @@ public final class LoginPage extends NavBarPage {
@SneakyThrows
public NavBarPage login(String username, String password, String teamName)
{
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(buttonLogin));
inputUsername().sendKeys(username);
@@ -62,7 +62,7 @@ public final class LoginPage extends NavBarPage {
buttonLogin().click();
try {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(teamForm.btnSelectTeamDropdown));
teamForm.btnSelectTeamDropdown.click();
@@ -78,7 +78,7 @@ public final class LoginPage extends NavBarPage {
log.warn("No team selection required:", e);
}
- new WebDriverWait(driver, Duration.ofSeconds(30))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/flink/app"));
return new NavBarPage(driver);
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/common/CommonFactory.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/common/CommonFactory.java
new file mode 100644
index 000000000..4a4769c04
--- /dev/null
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/common/CommonFactory.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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 org.apache.streampark.e2e.pages.common;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+import java.time.Duration;
+
+public class CommonFactory {
+
+ public static void WebElementDeleteAndInput(WebElement element, String
value) {
+ element.sendKeys(Keys.CONTROL + "a");
+ element.sendKeys(Keys.BACK_SPACE);
+ element.sendKeys(value);
+ }
+
+ public static void
WebDriverWaitForElementVisibilityAndInvisibility(WebDriver driver, String msg) {
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
+ .until(
+ ExpectedConditions.visibilityOfElementLocated(
+ By.xpath(String.format("//*[contains(text(),'%s')]",
+ msg))));
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
+ .until(
+ ExpectedConditions.invisibilityOfElementLocated(
+ By.xpath(String.format("//*[contains(text(),'%s')]",
+ msg))));
+ }
+
+ public static void
WebDriverWaitForElementVisibilityAndInvisibilityWithDuration(WebDriver driver,
String msg,
+
Duration duration) {
+ new WebDriverWait(driver, duration)
+ .until(
+ ExpectedConditions.visibilityOfElementLocated(
+ By.xpath(String.format("//*[contains(text(),'%s')]",
+ msg))));
+ new WebDriverWait(driver, duration)
+ .until(
+ ExpectedConditions.invisibilityOfElementLocated(
+ By.xpath(String.format("//*[contains(text(),'%s')]",
+ msg))));
+ }
+}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/common/Constants.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/common/Constants.java
index bc9787ad7..7319fc283 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/common/Constants.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/common/Constants.java
@@ -19,10 +19,14 @@ package org.apache.streampark.e2e.pages.common;
import lombok.experimental.UtilityClass;
+import java.time.Duration;
+
@UtilityClass
public class Constants {
public static final Integer DEFAULT_SLEEP_MILLISECONDS = 2000;
public static final Integer DEFAULT_PROJECT_BUILD_TIMEOUT_MINUTES = 5;
+
+ public static final Duration DEFAULT_WEBDRIVER_WAIT_DURATION =
Duration.ofSeconds(10);
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/common/NavBarPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/common/NavBarPage.java
index 969e8643c..4b7dc1cdb 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/common/NavBarPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/common/NavBarPage.java
@@ -30,8 +30,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
-
@Getter
public class NavBarPage {
@@ -56,7 +54,7 @@ public class NavBarPage {
public <T extends NavBarItem> T goToNav(Class<T> nav) {
if (nav == ApacheFlinkPage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(apacheFlinkTab));
String tabOpenStateXpath =
"//span[contains(@class, 'ml-2') and contains(@class,
'streampark-simple-menu-sub-title') and contains(text(), 'Apache
Flink')]/../parent::li[contains(@class, 'streampark-menu-opened')]";
@@ -67,7 +65,7 @@ public class NavBarPage {
}
if (nav == SystemPage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(systemTab));
String tabOpenStateXpath =
"//span[contains(@class, 'ml-2') and contains(@class,
'streampark-simple-menu-sub-title') and contains(text(),
'System')]/../parent::li[contains(@class, 'streampark-menu-opened')]";
@@ -78,7 +76,7 @@ public class NavBarPage {
}
if (nav == ResourcePage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(resourcesTab));
String tabOpenStateXpath =
"//span[contains(@class, 'ml-2') and contains(@class,
'streampark-simple-menu-sub-title') and contains(text(),
'Resource')]/../parent::li[contains(@class, 'streampark-menu-opened')]";
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/ApacheFlinkPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/ApacheFlinkPage.java
index 2453d1ce6..608b882dd 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/ApacheFlinkPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/ApacheFlinkPage.java
@@ -17,9 +17,11 @@
package org.apache.streampark.e2e.pages.flink;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import org.apache.streampark.e2e.pages.common.NavBarPage.NavBarItem;
import org.apache.streampark.e2e.pages.flink.applications.ApplicationsPage;
+import org.apache.streampark.e2e.pages.flink.clusters.FlinkClustersPage;
import lombok.Getter;
import org.openqa.selenium.WebElement;
@@ -28,8 +30,6 @@ import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
-
@Getter
public final class ApacheFlinkPage extends NavBarPage implements NavBarItem {
@@ -48,19 +48,26 @@ public final class ApacheFlinkPage extends NavBarPage
implements NavBarItem {
public <T extends ApacheFlinkPage.Tab> T goToTab(Class<T> tab) {
if (tab == ApplicationsPage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(menuApplications));
menuApplications.click();
return tab.cast(new ApplicationsPage(driver));
}
if (tab == FlinkHomePage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(menuFlinkHome));
menuFlinkHome.click();
return tab.cast(new FlinkHomePage(driver));
}
+ if (tab == FlinkClustersPage.class) {
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
+ .until(ExpectedConditions.elementToBeClickable(menuClusters));
+ menuClusters.click();
+ return tab.cast(new FlinkClustersPage(driver));
+ }
+
throw new UnsupportedOperationException("Unknown tab: " +
tab.getName());
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/FlinkHomePage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/FlinkHomePage.java
index d50fd7757..6df50e1d4 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/FlinkHomePage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/FlinkHomePage.java
@@ -17,6 +17,7 @@
package org.apache.streampark.e2e.pages.flink;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import lombok.Getter;
@@ -29,7 +30,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
@Getter
@@ -53,7 +53,7 @@ public class FlinkHomePage extends NavBarPage implements
ApacheFlinkPage.Tab {
public FlinkHomePage createFlinkHome(String flinkName, String flinkHome,
String description) {
waitForPageLoading();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(buttonCreateFlinkHome));
buttonCreateFlinkHome.click();
createFlinkHomeForm.inputFlinkName().sendKeys(flinkName);
@@ -113,17 +113,17 @@ public class FlinkHomePage extends NavBarPage implements
ApacheFlinkPage.Tab {
}
private void waitForPageLoading() {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/flink/home"));
}
private void waitForClickFinish(String message) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(
ExpectedConditions.visibilityOfElementLocated(
By.xpath(String.format("//*[contains(text(),'%s')]",
message))));
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(
ExpectedConditions.invisibilityOfElementLocated(
By.xpath(String.format("//*[contains(text(),'%s')]",
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/ApplicationForm.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/ApplicationForm.java
index 953480982..1f977301f 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/ApplicationForm.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/ApplicationForm.java
@@ -30,7 +30,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
@Getter
@@ -79,10 +78,10 @@ public final class ApplicationForm {
String flinkVersion,
ApplicationsDynamicParams
applicationsDynamicParams) {
Thread.sleep(Constants.DEFAULT_SLEEP_MILLISECONDS);
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(buttonDevelopmentModeDropdown));
buttonDevelopmentModeDropdown.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(selectDevelopmentMode));
switch (developmentMode) {
case CUSTOM_CODE:
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/ApplicationsPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/ApplicationsPage.java
index 3febb8f7b..57f105795 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/ApplicationsPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/ApplicationsPage.java
@@ -17,6 +17,7 @@
package org.apache.streampark.e2e.pages.flink.applications;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import org.apache.streampark.e2e.pages.flink.ApacheFlinkPage;
@@ -30,9 +31,10 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
+import static
org.apache.streampark.e2e.pages.common.CommonFactory.WebDriverWaitForElementVisibilityAndInvisibility;
+
@Getter
public class ApplicationsPage extends NavBarPage implements
ApacheFlinkPage.Tab {
@@ -59,7 +61,7 @@ public class ApplicationsPage extends NavBarPage implements
ApacheFlinkPage.Tab
waitForPageLoading();
buttonCreateApplication.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/flink/app/add"));
return new ApplicationForm(driver);
}
@@ -96,22 +98,22 @@ public class ApplicationsPage extends NavBarPage implements
ApacheFlinkPage.Tab
StartJobForm startJobForm = new StartJobForm();
String startJobFormMessage = "Start Job";
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(
ExpectedConditions.visibilityOfElementLocated(
By.xpath(String.format("//*[contains(.,'%s')]",
startJobFormMessage))));
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(startJobForm.radioFromSavepoint()));
startJobForm.radioFromSavepoint().click();
startJobForm.buttonSubmit().click();
String startPopUpMessage = "The current job is starting";
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(
ExpectedConditions.visibilityOfElementLocated(
By.xpath(String.format("//*[contains(text(),'%s')]",
startPopUpMessage))));
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(
ExpectedConditions.invisibilityOfElementLocated(
By.xpath(String.format("//*[contains(text(),'%s')]",
@@ -151,32 +153,23 @@ public class ApplicationsPage extends NavBarPage
implements ApacheFlinkPage.Tab
CancelJobForm cancelJobForm = new CancelJobForm();
String cancelJobFormMessage = "Stop Job";
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(
ExpectedConditions.visibilityOfElementLocated(
By.xpath(String.format("//*[contains(.,'%s')]",
cancelJobFormMessage))));
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(cancelJobForm.radioFromSavepoint()));
cancelJobForm.radioFromSavepoint().click();
cancelJobForm.buttonSubmit().click();
String cancelPopUpMessage = "The current job is canceling";
- new WebDriverWait(driver, Duration.ofSeconds(10))
- .until(
- ExpectedConditions.visibilityOfElementLocated(
- By.xpath(String.format("//*[contains(text(),'%s')]",
- cancelPopUpMessage))));
- new WebDriverWait(driver, Duration.ofSeconds(10))
- .until(
- ExpectedConditions.invisibilityOfElementLocated(
- By.xpath(String.format("//*[contains(text(),'%s')]",
- cancelPopUpMessage))));
+ WebDriverWaitForElementVisibilityAndInvisibility(driver,
cancelPopUpMessage);
return this;
}
private void waitForPageLoading() {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/flink/app"));
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/FlinkSQLEditor.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/FlinkSQLEditor.java
index 32a4f8fde..c40901187 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/FlinkSQLEditor.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/FlinkSQLEditor.java
@@ -17,6 +17,8 @@
package org.apache.streampark.e2e.pages.flink.applications;
+import org.apache.streampark.e2e.pages.common.Constants;
+
import lombok.Getter;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
@@ -26,8 +28,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
-
@Getter
public final class FlinkSQLEditor {
@@ -42,7 +42,7 @@ public final class FlinkSQLEditor {
}
public FlinkSQLEditor content(String content) {
- new WebDriverWait(this.driver, Duration.ofSeconds(20))
+ new WebDriverWait(this.driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(flinkSqlEditor));
flinkSqlEditor.click();
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/FlinkSQLYarnApplicationForm.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/FlinkSQLYarnApplicationForm.java
index 7544a84b8..d418b9688 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/FlinkSQLYarnApplicationForm.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/FlinkSQLYarnApplicationForm.java
@@ -17,6 +17,8 @@
package org.apache.streampark.e2e.pages.flink.applications;
+import org.apache.streampark.e2e.pages.common.Constants;
+
import lombok.Getter;
import lombok.SneakyThrows;
import org.openqa.selenium.WebDriver;
@@ -27,7 +29,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
@Getter
@@ -53,7 +54,7 @@ public final class FlinkSQLYarnApplicationForm {
@SneakyThrows
public FlinkSQLYarnApplicationForm add(String flinkVersion, String
flinkSql) {
buttonFlinkVersionDropdown.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(selectFlinkVersion));
selectFlinkVersion.stream()
.filter(e -> e.getText().equalsIgnoreCase(flinkVersion))
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/clusters/ClusterDetailForm.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/clusters/ClusterDetailForm.java
new file mode 100644
index 000000000..15ad80de6
--- /dev/null
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/clusters/ClusterDetailForm.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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 org.apache.streampark.e2e.pages.flink.clusters;
+
+import lombok.Getter;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.FindBys;
+import org.openqa.selenium.support.PageFactory;
+
+import java.util.List;
+
+@Getter
+public class ClusterDetailForm {
+
+ private WebDriver driver;
+
+ @FindBy(xpath = "//div[contains(@codefield,
'executionMode')]//div[contains(@class, 'ant-select-selector')]")
+ private WebElement buttonExecutionModeDropdown;
+
+ @FindBys({
+ @FindBy(css = "[codefield=executionMode]"),
+ @FindBy(className = "ant-select-item-option-content")
+ })
+ private List<WebElement> selectExecutionMode;
+
+ public ClusterDetailForm(WebDriver driver) {
+ PageFactory.initElements(driver, this);
+
+ this.driver = driver;
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T addCluster(ExecutionMode executionMode) {
+ buttonExecutionModeDropdown.click();
+ switch (executionMode) {
+ case YARN_SESSION:
+ selectExecutionMode.stream()
+ .filter(e ->
e.getText().equalsIgnoreCase(ExecutionMode.YARN_SESSION.desc()))
+ .findFirst()
+ .orElseThrow(() -> new IllegalArgumentException(
+ String.format("Execution Mode not found: %s",
executionMode.desc())))
+ .click();
+ return (T) new YarnSessionForm(this);
+ default:
+ throw new UnsupportedOperationException(
+ String.format("Unknown execution mode: %s",
executionMode.desc()));
+ }
+ }
+
+ @Getter
+ public enum ExecutionMode {
+
+ REMOTE("remote"),
+ YARN_SESSION("yarn session"),
+ KUBERNETES_SESSION(
+ "kubernetes session");
+
+ private final String desc;
+
+ ExecutionMode(String desc) {
+ this.desc = desc;
+ }
+ }
+}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/FlinkSQLYarnApplicationForm.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/clusters/CommonForm.java
similarity index 60%
copy from
streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/FlinkSQLYarnApplicationForm.java
copy to
streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/clusters/CommonForm.java
index 7544a84b8..bf111a0c3 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/applications/FlinkSQLYarnApplicationForm.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/clusters/CommonForm.java
@@ -15,7 +15,9 @@
* limitations under the License.
*/
-package org.apache.streampark.e2e.pages.flink.applications;
+package org.apache.streampark.e2e.pages.flink.clusters;
+
+import org.apache.streampark.e2e.pages.common.Constants;
import lombok.Getter;
import lombok.SneakyThrows;
@@ -24,17 +26,19 @@ import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.FindBys;
import org.openqa.selenium.support.PageFactory;
-import org.openqa.selenium.support.ui.ExpectedConditions;
-import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
+import static
org.apache.streampark.e2e.pages.common.CommonFactory.WebElementDeleteAndInput;
+
@Getter
-public final class FlinkSQLYarnApplicationForm {
+public abstract class CommonForm {
private WebDriver driver;
+ @FindBy(id = "form_item_clusterName")
+ private WebElement inputFlinkClusterName;
+
@FindBy(xpath = "//div[contains(@codefield,
'versionId')]//div[contains(@class, 'ant-select-selector')]")
private WebElement buttonFlinkVersionDropdown;
@@ -44,25 +48,40 @@ public final class FlinkSQLYarnApplicationForm {
})
private List<WebElement> selectFlinkVersion;
- public FlinkSQLYarnApplicationForm(WebDriver driver) {
- this.driver = driver;
+ @FindBy(xpath = "//button[contains(@class,
'ant-btn')]//span[contains(text(), 'Submit')]")
+ private WebElement buttonSubmit;
+
+ private final ClusterDetailForm parent;
+
+ CommonForm(ClusterDetailForm clusterDetailForm) {
+ final WebDriver driver = clusterDetailForm.driver();
PageFactory.initElements(driver, this);
+
+ this.parent = clusterDetailForm;
+ }
+
+ public CommonForm clusterName(String clusterName) {
+ WebElementDeleteAndInput(inputFlinkClusterName, clusterName);
+ return this;
}
@SneakyThrows
- public FlinkSQLYarnApplicationForm add(String flinkVersion, String
flinkSql) {
+ public CommonForm flinkVersion(String flinkVersion) {
buttonFlinkVersionDropdown.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
-
.until(ExpectedConditions.visibilityOfAllElements(selectFlinkVersion));
+ Thread.sleep(Constants.DEFAULT_SLEEP_MILLISECONDS);
selectFlinkVersion.stream()
.filter(e -> e.getText().equalsIgnoreCase(flinkVersion))
.findFirst()
- .orElseThrow(() -> new IllegalArgumentException("Flink version not
found"))
+ .orElseThrow(() -> new
IllegalArgumentException(String.format("Flink version not found: %s",
flinkVersion)))
.click();
- new FlinkSQLEditor(driver).content(flinkSql);
-
return this;
}
+
+ public ClusterDetailForm submit() {
+ buttonSubmit.click();
+
+ return parent();
+ }
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/clusters/FlinkClustersPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/clusters/FlinkClustersPage.java
new file mode 100644
index 000000000..977f00a63
--- /dev/null
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/clusters/FlinkClustersPage.java
@@ -0,0 +1,151 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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 org.apache.streampark.e2e.pages.flink.clusters;
+
+import org.apache.streampark.e2e.pages.common.Constants;
+import org.apache.streampark.e2e.pages.common.NavBarPage;
+import org.apache.streampark.e2e.pages.flink.ApacheFlinkPage;
+
+import lombok.Getter;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.remote.RemoteWebDriver;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+import java.time.Duration;
+import java.util.List;
+
+import static
org.apache.streampark.e2e.pages.common.CommonFactory.WebDriverWaitForElementVisibilityAndInvisibility;
+import static
org.apache.streampark.e2e.pages.common.CommonFactory.WebDriverWaitForElementVisibilityAndInvisibilityWithDuration;
+
+@Getter
+public class FlinkClustersPage extends NavBarPage implements
ApacheFlinkPage.Tab {
+
+ @FindBy(xpath = "//span[contains(., 'Flink
Cluster')]/..//button[contains(@class, 'ant-btn')]/span[contains(text(), 'Add
New')]")
+ private WebElement buttonCreateFlinkCluster;
+
+ @FindBy(xpath = "//div[contains(@class, 'ant-spin-container')]")
+ private List<WebElement> flinkClusterList;
+
+ @FindBy(xpath = "//button[contains(@class, 'ant-btn')]/span[contains(.,
'Yes')]")
+ private WebElement deleteConfirmButton;
+
+ public FlinkClustersPage(RemoteWebDriver driver) {
+ super(driver);
+ }
+
+ public ClusterDetailForm createFlinkCluster() {
+ waitForPageLoading();
+
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
+
.until(ExpectedConditions.elementToBeClickable(buttonCreateFlinkCluster));
+ buttonCreateFlinkCluster.click();
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
+ .until(ExpectedConditions.urlContains("/flink/add_cluster"));
+
+ return new ClusterDetailForm(driver);
+ }
+
+ public ClusterDetailForm editFlinkCluster(String flinkClusterName) {
+ waitForPageLoading();
+
+ flinkClusterList().stream()
+ .filter(it -> it.getText().contains(flinkClusterName))
+ .flatMap(
+ it -> it
+ .findElements(
+ By.className("anticon-edit"))
+ .stream())
+ .filter(WebElement::isDisplayed)
+ .findFirst()
+ .orElseThrow(() -> new RuntimeException("No edit button in flink
clusters list"))
+ .click();
+
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
+ .until(ExpectedConditions.urlContains("/flink/edit_cluster"));
+ return new ClusterDetailForm(driver);
+ }
+
+ public FlinkClustersPage startFlinkCluster(String flinkClusterName) {
+ waitForPageLoading();
+
+ flinkClusterList().stream()
+ .filter(it -> it.getText().contains(flinkClusterName))
+ .flatMap(
+ it -> it
+ .findElements(
+ By.className("anticon-play-circle"))
+ .stream())
+ .filter(WebElement::isDisplayed)
+ .findFirst()
+ .orElseThrow(() -> new RuntimeException("No start button in flink
clusters list"))
+ .click();
+
+ String startMessage = "The current cluster is started";
+ WebDriverWaitForElementVisibilityAndInvisibilityWithDuration(driver,
startMessage, Duration.ofMinutes(1));
+ return this;
+ }
+
+ public FlinkClustersPage stopFlinkCluster(String flinkClusterName) {
+ waitForPageLoading();
+
+ flinkClusterList().stream()
+ .filter(it -> it.getText().contains(flinkClusterName))
+ .flatMap(
+ it -> it
+ .findElements(
+ By.className("anticon-pause-circle"))
+ .stream())
+ .filter(WebElement::isDisplayed)
+ .findFirst()
+ .orElseThrow(() -> new RuntimeException("No stop button in flink
clusters list"))
+ .click();
+
+ String stopMessage = "The current cluster is shutdown";
+ WebDriverWaitForElementVisibilityAndInvisibility(driver, stopMessage);
+ return this;
+ }
+
+ public FlinkClustersPage deleteFlinkCluster(String flinkName) {
+ waitForPageLoading();
+
+ flinkClusterList().stream()
+ .filter(it -> it.getText().contains(flinkName))
+ .flatMap(
+ it -> it
+ .findElements(
+ By.className("anticon-delete"))
+ .stream())
+ .filter(WebElement::isDisplayed)
+ .findFirst()
+ .orElseThrow(() -> new RuntimeException("No delete button in flink
clusters list"))
+ .click();
+
+ deleteConfirmButton.click();
+ String deleteMessage = "The current cluster is remove";
+ WebDriverWaitForElementVisibilityAndInvisibility(driver,
deleteMessage);
+ return this;
+ }
+
+ private void waitForPageLoading() {
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
+ .until(ExpectedConditions.urlContains("/flink/cluster"));
+ }
+}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/clusters/YarnSessionForm.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/clusters/YarnSessionForm.java
new file mode 100644
index 000000000..cecde9c65
--- /dev/null
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/flink/clusters/YarnSessionForm.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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 org.apache.streampark.e2e.pages.flink.clusters;
+
+import lombok.Getter;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.FindBys;
+
+import java.util.List;
+
+@Getter
+public class YarnSessionForm extends CommonForm {
+
+ private WebDriver driver;
+
+ @FindBy(xpath = "//div[contains(@codefield,
'resolveOrder')]//div[contains(@class, 'ant-select-selector')]")
+ private WebElement buttonResolveOrderDropdown;
+
+ @FindBys({
+ @FindBy(css = "[codefield=resolveOrder]"),
+ @FindBy(className = "ant-select-item-option-content")
+ })
+ private List<WebElement> selectResolveOrder;
+
+ public YarnSessionForm(ClusterDetailForm clusterDetailForm) {
+ super(clusterDetailForm);
+
+ this.driver = clusterDetailForm.driver();
+ }
+
+ public YarnSessionForm resolveOrder(ResolveOrder resolveOrder) {
+ buttonResolveOrderDropdown.click();
+ selectResolveOrder.stream()
+ .filter(e -> e.getText().equalsIgnoreCase(resolveOrder.desc()))
+ .findFirst()
+ .orElseThrow(
+ () -> new IllegalArgumentException(String.format("Resolve
Order not found: %s", resolveOrder.desc())))
+ .click();
+
+ return this;
+ }
+
+ @Getter
+ public enum ResolveOrder {
+
+ PARENT_FIRST("parent-first"),
+ CHILD_FIRST("child-first");
+
+ private final String desc;
+
+ ResolveOrder(String desc) {
+ this.desc = desc;
+ }
+ }
+}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/ProjectsPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/ProjectsPage.java
index 236fe267e..67b5b7973 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/ProjectsPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/ProjectsPage.java
@@ -32,7 +32,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
@Getter
@@ -63,7 +62,7 @@ public class ProjectsPage extends NavBarPage implements
ResourcePage.Tab {
String projectDescription) {
waitForPageLoading();
buttonCreateProject.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/project/add"));
createProjectForm.inputProjectName().sendKeys(projectName);
@@ -76,7 +75,7 @@ public class ProjectsPage extends NavBarPage implements
ResourcePage.Tab {
createProjectForm.inputProjectUrl().sendKeys(projectUrl);
createProjectForm.selectBranchDropdown().click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(createProjectForm.selectBranchText()));
createProjectForm.selectBranchText().stream()
.filter(e -> e.getText().equalsIgnoreCase(projectBranch))
@@ -107,14 +106,14 @@ public class ProjectsPage extends NavBarPage implements
ResourcePage.Tab {
.findElement(
By.xpath("//..//li[contains(@class,
'ant-list-item')]//button[contains(@class, 'ant-btn')][3]"))
.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/project/edit"));
createProjectForm.inputProjectName().sendKeys(Keys.CONTROL + "a");
createProjectForm.inputProjectName().sendKeys(Keys.BACK_SPACE);
createProjectForm.inputProjectName().sendKeys(newProjectName);
createProjectForm.selectCveDropdown().click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(createProjectForm.selectCveText()));
createProjectForm.selectCveText().stream()
.filter(e -> e.getText().equalsIgnoreCase(projectCvs))
@@ -126,7 +125,7 @@ public class ProjectsPage extends NavBarPage implements
ResourcePage.Tab {
createProjectForm.inputProjectUrl().sendKeys(Keys.BACK_SPACE);
createProjectForm.inputProjectUrl().sendKeys(projectUrl);
createProjectForm.selectBranchDropdown().click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(createProjectForm.selectBranchText()));
createProjectForm.selectBranchText().stream()
.filter(e -> e.getText().equalsIgnoreCase(projectBranch))
@@ -171,12 +170,12 @@ public class ProjectsPage extends NavBarPage implements
ResourcePage.Tab {
.click();
popupConfirmButton.click();
String deletePopUpMessage = "delete successful";
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(
ExpectedConditions.visibilityOfElementLocated(
By.xpath(String.format("//*[contains(text(),'%s')]",
deletePopUpMessage))));
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(
ExpectedConditions.invisibilityOfElementLocated(
By.xpath(String.format("//*[contains(text(),'%s')]",
@@ -186,7 +185,7 @@ public class ProjectsPage extends NavBarPage implements
ResourcePage.Tab {
}
private void waitForPageLoading() {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/resource/project"));
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/ResourcePage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/ResourcePage.java
index 9c7b7985c..e37c41ed8 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/ResourcePage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/ResourcePage.java
@@ -17,6 +17,7 @@
package org.apache.streampark.e2e.pages.resource;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import org.apache.streampark.e2e.pages.common.NavBarPage.NavBarItem;
@@ -27,8 +28,6 @@ import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
-
@Getter
public final class ResourcePage extends NavBarPage implements NavBarItem {
@@ -47,21 +46,21 @@ public final class ResourcePage extends NavBarPage
implements NavBarItem {
public <T extends ResourcePage.Tab> T goToTab(Class<T> tab) {
if (tab == VariablesPage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(menuVariables));
menuVariables.click();
return tab.cast(new VariablesPage(driver));
}
if (tab == ProjectsPage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(menuProjects));
menuProjects.click();
return tab.cast(new ProjectsPage(driver));
}
if (tab == UploadsPage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(menuUploads));
menuUploads.click();
return tab.cast(new UploadsPage(driver));
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/UploadsPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/UploadsPage.java
index 0cfb009c8..59e092138 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/UploadsPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/UploadsPage.java
@@ -17,6 +17,7 @@
package org.apache.streampark.e2e.pages.resource;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import lombok.Getter;
@@ -29,7 +30,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
@Getter
@@ -61,13 +61,13 @@ public class UploadsPage extends NavBarPage implements
ResourcePage.Tab {
String description) {
waitForPageLoading();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(buttonCreateResource));
buttonCreateResource.click();
// select engine type.
createUploadForm.btnSelectEngineTypeDropDown().click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(createUploadForm.selectEngineType()));
createUploadForm.selectEngineType().stream()
.filter(e -> e.getText().equals(engineType))
@@ -79,7 +79,7 @@ public class UploadsPage extends NavBarPage implements
ResourcePage.Tab {
// select resource type.
createUploadForm.btnSelectResourceTypeDropDown().click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(createUploadForm.selectResourceType()));
createUploadForm.selectResourceType().stream()
.filter(e -> e.getText().equals(resourceType))
@@ -112,7 +112,7 @@ public class UploadsPage extends NavBarPage implements
ResourcePage.Tab {
// select engine type.
createUploadForm.btnSelectEngineTypeDropDown().click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(createUploadForm.selectEngineType()));
createUploadForm.selectResourceType.stream()
.filter(e -> e.getText().equals(engineType))
@@ -124,7 +124,7 @@ public class UploadsPage extends NavBarPage implements
ResourcePage.Tab {
// select resource type.
createUploadForm.btnSelectResourceTypeDropDown().click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(createUploadForm.selectResourceType()));
createUploadForm.selectResourceType().stream()
.filter(e -> e.getText().equals(resourceType))
@@ -155,7 +155,7 @@ public class UploadsPage extends NavBarPage implements
ResourcePage.Tab {
.orElseThrow(() -> new RuntimeException("No delete button in
resource list"))
.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(deleteConfirmButton));
deleteConfirmButton.click();
@@ -164,7 +164,7 @@ public class UploadsPage extends NavBarPage implements
ResourcePage.Tab {
}
private void waitForPageLoading() {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/resource/upload"));
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/VariablesPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/VariablesPage.java
index 3d0a78d08..bfe271a79 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/VariablesPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/resource/VariablesPage.java
@@ -17,6 +17,7 @@
package org.apache.streampark.e2e.pages.resource;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import lombok.Getter;
@@ -28,7 +29,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
@Getter
@@ -59,7 +59,7 @@ public class VariablesPage extends NavBarPage implements
ResourcePage.Tab {
boolean notVisible) {
waitForPageLoading();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(buttonCreateVariable));
buttonCreateVariable.click();
createVariableForm.inputVariableCode().sendKeys(variableCode);
@@ -88,7 +88,7 @@ public class VariablesPage extends NavBarPage implements
ResourcePage.Tab {
.orElseThrow(() -> new RuntimeException("No edit button in
variable list"))
.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(createVariableForm.buttonSubmit));
createVariableForm.inputVariableValue().clear();
createVariableForm.inputVariableValue().sendKeys(variableValue);
@@ -116,7 +116,7 @@ public class VariablesPage extends NavBarPage implements
ResourcePage.Tab {
.orElseThrow(() -> new RuntimeException("No delete button in
variable list"))
.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(deleteConfirmButton));
deleteConfirmButton.click();
@@ -124,7 +124,7 @@ public class VariablesPage extends NavBarPage implements
ResourcePage.Tab {
}
private void waitForPageLoading() {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/resource/variable"));
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/MemberManagementPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/MemberManagementPage.java
index e22b55fd2..9101733d1 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/MemberManagementPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/MemberManagementPage.java
@@ -17,6 +17,7 @@
package org.apache.streampark.e2e.pages.system;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import lombok.Getter;
@@ -29,7 +30,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
@Getter
@@ -59,13 +59,13 @@ public class MemberManagementPage extends NavBarPage
implements SystemPage.Tab {
public MemberManagementPage createMember(String userName, String role) {
waitForPageLoading();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(buttonCreateMember));
buttonCreateMember.click();
createMemberForm.btnSelectUserNameDropDown().click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(createMemberForm.selectUserName));
createMemberForm.selectUserName.stream()
.filter(e -> e.getText().equals(userName))
@@ -76,7 +76,7 @@ public class MemberManagementPage extends NavBarPage
implements SystemPage.Tab {
.click();
createMemberForm().btnSelectRoleDropDown().click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(createMemberForm.selectRole));
createMemberForm.selectRole.stream()
.filter(e -> e.getText().equals(role))
@@ -104,7 +104,7 @@ public class MemberManagementPage extends NavBarPage
implements SystemPage.Tab {
.click();
createMemberForm().btnSelectRoleDropDown().click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(createMemberForm.selectRole));
createMemberForm.selectRole.stream()
.filter(e -> e.getText().equals(role))
@@ -131,7 +131,7 @@ public class MemberManagementPage extends NavBarPage
implements SystemPage.Tab {
.orElseThrow(() -> new RuntimeException("No delete button in
member list"))
.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(deleteConfirmButton));
deleteConfirmButton.click();
@@ -140,7 +140,7 @@ public class MemberManagementPage extends NavBarPage
implements SystemPage.Tab {
}
private void waitForPageLoading() {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/system/member"));
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/RoleManagementPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/RoleManagementPage.java
index 4a55209fc..13bec2a48 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/RoleManagementPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/RoleManagementPage.java
@@ -17,6 +17,7 @@
package org.apache.streampark.e2e.pages.system;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import lombok.Getter;
@@ -57,7 +58,7 @@ public class RoleManagementPage extends NavBarPage implements
SystemPage.Tab {
public RoleManagementPage createRole(String roleName, String description,
String menuName) {
waitForPageLoading();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(buttonCreateRole));
buttonCreateRole.click();
@@ -103,7 +104,7 @@ public class RoleManagementPage extends NavBarPage
implements SystemPage.Tab {
.orElseThrow(() -> new RuntimeException("No delete button in role
list"))
.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(deleteConfirmButton));
deleteConfirmButton.click();
@@ -112,7 +113,7 @@ public class RoleManagementPage extends NavBarPage
implements SystemPage.Tab {
}
private void waitForPageLoading() {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/system/role"));
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/SystemPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/SystemPage.java
index 14e7035e2..2bbae08be 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/SystemPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/SystemPage.java
@@ -17,6 +17,7 @@
package org.apache.streampark.e2e.pages.system;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import org.apache.streampark.e2e.pages.common.NavBarPage.NavBarItem;
@@ -27,8 +28,6 @@ import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
-
@Getter
public final class SystemPage extends NavBarPage implements NavBarItem {
@@ -53,34 +52,34 @@ public final class SystemPage extends NavBarPage implements
NavBarItem {
public <T extends SystemPage.Tab> T goToTab(Class<T> tab) {
if (tab == UserManagementPage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(menuUserManagement));
menuUserManagement.click();
return tab.cast(new UserManagementPage(driver));
}
if (tab == TeamManagementPage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(menuTeamManagement));
menuTeamManagement.click();
return tab.cast(new TeamManagementPage(driver));
}
if (tab == RoleManagementPage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(menuRoleManagement));
menuRoleManagement.click();
return tab.cast(new RoleManagementPage(driver));
}
if (tab == TokenManagementPage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(menuTokenManagement));
menuTokenManagement.click();
return tab.cast(new TokenManagementPage(driver));
}
if (tab == MemberManagementPage.class) {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver,
Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(menuMemberManagement));
menuMemberManagement.click();
return tab.cast(new MemberManagementPage(driver));
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/TeamManagementPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/TeamManagementPage.java
index 179ed253d..ea2f9baff 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/TeamManagementPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/TeamManagementPage.java
@@ -17,6 +17,7 @@
package org.apache.streampark.e2e.pages.system;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import lombok.Getter;
@@ -29,7 +30,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
@Getter
@@ -59,7 +59,7 @@ public class TeamManagementPage extends NavBarPage implements
SystemPage.Tab {
public TeamManagementPage createTeam(String teamName, String description) {
waitForPageLoading();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(buttonCreateTeam));
buttonCreateTeam.click();
createTeamForm.inputTeamName().sendKeys(teamName);
@@ -82,7 +82,7 @@ public class TeamManagementPage extends NavBarPage implements
SystemPage.Tab {
.orElseThrow(() -> new RuntimeException("No edit button in team
list"))
.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(createTeamForm.buttonSubmit));
createTeamForm.inputDescription().sendKeys(Keys.CONTROL + "a");
createTeamForm.inputDescription().sendKeys(Keys.BACK_SPACE);
@@ -106,7 +106,7 @@ public class TeamManagementPage extends NavBarPage
implements SystemPage.Tab {
.orElseThrow(() -> new RuntimeException("No delete button in team
list"))
.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(deleteConfirmButton));
deleteConfirmButton.click();
@@ -115,7 +115,7 @@ public class TeamManagementPage extends NavBarPage
implements SystemPage.Tab {
}
private void waitForPageLoading() {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/system/team"));
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/TokenManagementPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/TokenManagementPage.java
index 987e01ad4..32717c747 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/TokenManagementPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/TokenManagementPage.java
@@ -17,6 +17,7 @@
package org.apache.streampark.e2e.pages.system;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import lombok.Getter;
@@ -29,7 +30,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
@Getter
@@ -56,11 +56,11 @@ public class TokenManagementPage extends NavBarPage
implements SystemPage.Tab {
public TokenManagementPage createToken(String existUserName, String
description) {
waitForPageLoading();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(buttonCreateToken));
buttonCreateToken.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(createTokenForm.inputUserName()));
createTokenForm.inputUserName().sendKeys(existUserName);
createTokenForm.inputUserName().sendKeys(Keys.RETURN);
@@ -97,7 +97,7 @@ public class TokenManagementPage extends NavBarPage
implements SystemPage.Tab {
.orElseThrow(() -> new RuntimeException("No delete button in token
list"))
.click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(deleteConfirmButton));
deleteConfirmButton.click();
@@ -105,7 +105,7 @@ public class TokenManagementPage extends NavBarPage
implements SystemPage.Tab {
}
private void waitForPageLoading() {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/system/token"));
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/UserManagementPage.java
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/UserManagementPage.java
index 5afcd92f5..c07a2fd57 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/UserManagementPage.java
+++
b/streampark-e2e/streampark-e2e-case/src/test/java/org/apache/streampark/e2e/pages/system/UserManagementPage.java
@@ -17,6 +17,7 @@
package org.apache.streampark.e2e.pages.system;
+import org.apache.streampark.e2e.pages.common.Constants;
import org.apache.streampark.e2e.pages.common.NavBarPage;
import org.apache.streampark.e2e.pages.system.entity.UserManagementStatus;
import org.apache.streampark.e2e.pages.system.entity.UserManagementUserType;
@@ -32,7 +33,6 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
-import java.time.Duration;
import java.util.List;
@Getter
@@ -61,7 +61,7 @@ public class UserManagementPage extends NavBarPage implements
SystemPage.Tab {
UserManagementUserType
userManagementUserType) {
waitForPageLoading();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.elementToBeClickable(buttonCreateUser));
buttonCreateUser.click();
createUserForm.inputUserName().sendKeys(userName);
@@ -70,7 +70,7 @@ public class UserManagementPage extends NavBarPage implements
SystemPage.Tab {
createUserForm.inputEmail().sendKeys(email);
createUserForm.btnSelectUserTypeDropdown().click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(createUserForm.selectUserType));
createUserForm.selectUserType.stream()
.filter(e ->
e.getText().equalsIgnoreCase(String.valueOf(userManagementUserType)))
@@ -107,7 +107,7 @@ public class UserManagementPage extends NavBarPage
implements SystemPage.Tab {
createUserForm.inputEmail().sendKeys(email);
createUserForm.btnSelectUserTypeDropdown().click();
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.visibilityOfAllElements(createUserForm.selectUserType));
createUserForm.selectUserType.stream()
.filter(e ->
e.getText().equalsIgnoreCase(String.valueOf(userManagementUserType)))
@@ -135,7 +135,7 @@ public class UserManagementPage extends NavBarPage
implements SystemPage.Tab {
}
private void waitForPageLoading() {
- new WebDriverWait(driver, Duration.ofSeconds(10))
+ new WebDriverWait(driver, Constants.DEFAULT_WEBDRIVER_WAIT_DURATION)
.until(ExpectedConditions.urlContains("/system/user"));
}
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/resources/docker/flink-1.16-on-yarn/Dockerfile
b/streampark-e2e/streampark-e2e-case/src/test/resources/docker/flink-1.16-on-yarn/Dockerfile
index 1f65cde46..0cd1d2abe 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/resources/docker/flink-1.16-on-yarn/Dockerfile
+++
b/streampark-e2e/streampark-e2e-case/src/test/resources/docker/flink-1.16-on-yarn/Dockerfile
@@ -38,6 +38,7 @@ RUN \
if [ "$TARGETPLATFORM" = "linux/arm64" ];then \
sudo rm -f /etc/yum.repos.d/*.repo; \
sudo wget http://mirrors.aliyun.com/repo/Centos-altarch-7.repo -O
/etc/yum.repos.d/CentOS-Base.repo; \
+ sudo sed -i "s/http:\/\//https:\/\//g"
/etc/yum.repos.d/CentOS-Base.repo; \
sudo yum install -y java-1.8.0-openjdk-devel; \
elif [ "$TARGETPLATFORM" = "linux/amd64" ];then \
sudo yum install -y java-1.8.0-openjdk-devel; \
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/resources/docker/flink-1.17-on-yarn/Dockerfile
b/streampark-e2e/streampark-e2e-case/src/test/resources/docker/flink-1.17-on-yarn/Dockerfile
index 34d4bfaef..a5f6e4063 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/resources/docker/flink-1.17-on-yarn/Dockerfile
+++
b/streampark-e2e/streampark-e2e-case/src/test/resources/docker/flink-1.17-on-yarn/Dockerfile
@@ -38,6 +38,7 @@ RUN \
if [ "$TARGETPLATFORM" = "linux/arm64" ];then \
sudo rm -f /etc/yum.repos.d/*.repo; \
sudo wget http://mirrors.aliyun.com/repo/Centos-altarch-7.repo -O
/etc/yum.repos.d/CentOS-Base.repo; \
+ sudo sed -i "s/http:\/\//https:\/\//g"
/etc/yum.repos.d/CentOS-Base.repo; \
sudo yum install -y java-1.8.0-openjdk-devel; \
elif [ "$TARGETPLATFORM" = "linux/amd64" ];then \
sudo yum install -y java-1.8.0-openjdk-devel; \
diff --git
a/streampark-e2e/streampark-e2e-case/src/test/resources/docker/flink-1.18-on-yarn/Dockerfile
b/streampark-e2e/streampark-e2e-case/src/test/resources/docker/flink-1.18-on-yarn/Dockerfile
index 5f0773e22..f453909ca 100644
---
a/streampark-e2e/streampark-e2e-case/src/test/resources/docker/flink-1.18-on-yarn/Dockerfile
+++
b/streampark-e2e/streampark-e2e-case/src/test/resources/docker/flink-1.18-on-yarn/Dockerfile
@@ -38,6 +38,7 @@ RUN \
if [ "$TARGETPLATFORM" = "linux/arm64" ];then \
sudo rm -f /etc/yum.repos.d/*.repo; \
sudo wget http://mirrors.aliyun.com/repo/Centos-altarch-7.repo -O
/etc/yum.repos.d/CentOS-Base.repo; \
+ sudo sed -i "s/http:\/\//https:\/\//g"
/etc/yum.repos.d/CentOS-Base.repo; \
sudo yum install -y java-1.8.0-openjdk-devel; \
elif [ "$TARGETPLATFORM" = "linux/amd64" ];then \
sudo yum install -y java-1.8.0-openjdk-devel; \