Skip to content

Commit

Permalink
Automate E2E Testing for Multiple OCP Versions in Nightly Build (#1273)
Browse files Browse the repository at this point in the history
* RHDH Configure diff OCP version v14

* RHDH Configure diff OCP version v14 -test

* RHDH Configure diff OCP version v4.14
  • Loading branch information
subhashkhileri committed May 27, 2024
1 parent f03dbfa commit 882cb2b
Show file tree
Hide file tree
Showing 8 changed files with 42 additions and 28 deletions.
2 changes: 1 addition & 1 deletion .ibm/pipelines/auth/secrets-rhdh-secrets.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ data:
K8S_CLUSTER_NAME: bXktY2x1c3Rlcgo=
K8S_CLUSTER_API_SERVER_URL: aHR0cHM6Ly9jMTAwLWUudXMtZWFzdC5jb250YWluZXJzLmNsb3VkLmlibS5jb206MzIyMTIK
K8S_CLUSTER_TOKEN_ENCODED: dGVtcA==
OCM_CLUSTER_URL: aHR0cHM6Ly9jMTAwLWUudXMtZWFzdC5jb250YWluZXJzLmNsb3VkLmlibS5jb206MzIyMTI=
OCM_CLUSTER_URL: dGVtcA==
OCM_CLUSTER_TOKEN: dGVtcA==
KEYCLOAK_BASE_URL: aHR0cHM6Ly9rZXljbG9hay1rZXljbG9hay5yaGRoLXByLW9zLWE5ODA1NjUwODMwYjIyYzNhZWUyNDNlNTFkNzk1NjVkLTAwMDAudXMtZWFzdC5jb250YWluZXJzLmFwcGRvbWFpbi5jbG91ZA==
KEYCLOAK_LOGIN_REALM: bXlyZWFsbQ==
Expand Down
15 changes: 5 additions & 10 deletions .ibm/pipelines/env_variables.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@ HELM_CHART_RBAC_VALUE_FILE_NAME="values_showcase-rbac.yaml"
HELM_IMAGE_NAME=backstage
HELM_REPO_NAME=rhdh-chart
HELM_REPO_URL="https://redhat-developer.github.io/rhdh-chart"
K8S_CLUSTER_ROUTER_BASE="rhdh-pr-os-a9805650830b22c3aee243e51d79565d-0000.us-east.containers.appdomain.cloud"
K8S_CLUSTER_TOKEN=$(cat /tmp/secrets/K8S_CLUSTER_TOKEN)
K8S_CLUSTER_TOKEN_ENCODED=$(cat /tmp/secrets/K8S_CLUSTER_TOKEN_ENCODED)
K8S_CLUSTER_URL=https://c100-e.us-east.containers.cloud.ibm.com:32212
OPENSHIFT_CLUSTER_ID=cobct3kw0lbiltuijvmg
K8S_CLUSTER_TOKEN_ENCODED=$(echo -n $K8S_CLUSTER_TOKEN | base64 | tr -d '\n')

RELEASE_NAME=rhdh
RELEASE_NAME_RBAC=rhdh-rbac
Expand All @@ -31,11 +27,10 @@ GH_USER_PASS=$(cat /tmp/secrets/GH_USER_PASS)
GH_2FA_SECRET=$(cat /tmp/secrets/GH_2FA_SECRET)
GH_RHDH_QE_USER_TOKEN=$(cat /tmp/secrets/GH_RHDH_QE_USER_TOKEN)

K8S_CLUSTER_NAME=Y29iY3Qza3cwbGJpbHR1aWp2bWc=
K8S_CLUSTER_API_SERVER_URL=aHR0cHM6Ly9jMTAwLWUudXMtZWFzdC5jb250YWluZXJzLmNsb3VkLmlibS5jb206MzIyMTI=
K8S_SERVICE_ACCOUNT_TOKEN=$(cat /tmp/secrets/K8S_SERVICE_ACCOUNT_TOKEN)
OCM_CLUSTER_URL=aHR0cHM6Ly9jMTAwLWUudXMtZWFzdC5jb250YWluZXJzLmNsb3VkLmlibS5jb206MzIyMTI=
OCM_CLUSTER_TOKEN=$(cat /tmp/secrets/OCM_CLUSTER_TOKEN)
K8S_CLUSTER_API_SERVER_URL=$(echo -n "$K8S_CLUSTER_URL" | base64 | tr -d '\n')
K8S_SERVICE_ACCOUNT_TOKEN=$K8S_CLUSTER_TOKEN_ENCODED
OCM_CLUSTER_URL=$(echo -n "$K8S_CLUSTER_URL" | base64 | tr -d '\n')
OCM_CLUSTER_TOKEN=$K8S_CLUSTER_TOKEN_ENCODED
KEYCLOAK_BASE_URL='https://keycloak-keycloak.rhdh-pr-os-a9805650830b22c3aee243e51d79565d-0000.us-east.containers.appdomain.cloud'
KEYCLOAK_LOGIN_REALM='myrealm'
KEYCLOAK_REALM='myrealm'
Expand Down
28 changes: 23 additions & 5 deletions .ibm/pipelines/openshift-ci-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,19 @@ cleanup() {

trap cleanup EXIT

set_cluster_info() {
export K8S_CLUSTER_URL=$(cat /tmp/secrets/RHDH_PR_OS_CLUSTER_URL)
export K8S_CLUSTER_TOKEN=$(cat /tmp/secrets/RHDH_PR_OS_CLUSTER_TOKEN)

if [[ "$JOB_NAME" == *ocp-v4-14 ]]; then
K8S_CLUSTER_URL=$(cat /tmp/secrets/RHDH_OS_1_CLUSTER_URL)
K8S_CLUSTER_TOKEN=$(cat /tmp/secrets/RHDH_OS_1_CLUSTER_TOKEN)
elif [[ "$JOB_NAME" == *ocp-v4-13 ]]; then
K8S_CLUSTER_URL=$(cat /tmp/secrets/RHDH_OS_2_CLUSTER_URL)
K8S_CLUSTER_TOKEN=$(cat /tmp/secrets/RHDH_OS_2_CLUSTER_TOKEN)
fi
}

add_helm_repos() {
helm version

Expand Down Expand Up @@ -104,7 +117,7 @@ apply_yaml_files() {

sed -i "s/backstage.io\/kubernetes-id:.*/backstage.io\/kubernetes-id: ${K8S_PLUGIN_ANNOTATION}/g" "$dir/resources/deployment/deployment-test-app-component.yaml"

for key in GITHUB_APP_APP_ID GITHUB_APP_CLIENT_ID GITHUB_APP_PRIVATE_KEY GITHUB_APP_CLIENT_SECRET GITHUB_APP_WEBHOOK_URL GITHUB_APP_WEBHOOK_SECRET KEYCLOAK_CLIENT_SECRET ACR_SECRET GOOGLE_CLIENT_ID GOOGLE_CLIENT_SECRET K8S_CLUSTER_TOKEN_ENCODED; do
for key in GITHUB_APP_APP_ID GITHUB_APP_CLIENT_ID GITHUB_APP_PRIVATE_KEY GITHUB_APP_CLIENT_SECRET GITHUB_APP_WEBHOOK_URL GITHUB_APP_WEBHOOK_SECRET KEYCLOAK_CLIENT_SECRET ACR_SECRET GOOGLE_CLIENT_ID GOOGLE_CLIENT_SECRET K8S_CLUSTER_TOKEN_ENCODED OCM_CLUSTER_URL; do
sed -i "s|${key}:.*|${key}: ${!key}|g" "$dir/auth/secrets-rhdh-secrets.yaml"
done

Expand Down Expand Up @@ -140,6 +153,10 @@ apply_yaml_files() {

droute_send() {
set -x
# Skipping ReportPortal for nightly jobs on OCP v4.14 and v4.13 for now, as new clusters are not behind the RH VPN.
if [[ "$JOB_NAME" == *ocp-v4* ]]; then
return 0
fi

local release_name=$1
local project=$2
Expand Down Expand Up @@ -304,21 +321,22 @@ check_and_test() {

main() {
echo "Log file: ${LOGFILE}"
set_cluster_info
source "${DIR}/env_variables.sh"
if [ "${JOB_TYPE}" != "presubmit" ]; then
if [[ "$JOB_NAME" == *periodic-* ]]; then
NAME_SPACE="showcase-ci-nightly"
NAME_SPACE_RBAC="showcase-rbac-nightly"
fi

echo "OPENSHIFT_CLUSTER_ID: ${OPENSHIFT_CLUSTER_ID}"

install_oc
oc version --client
oc login --token="${K8S_CLUSTER_TOKEN}" --server="${K8S_CLUSTER_URL}"
echo "OCP version: $(oc version)"

API_SERVER_URL=$(oc whoami --show-server)
K8S_CLUSTER_ROUTER_BASE=$(oc get route console -n openshift-console -o=jsonpath='{.spec.host}' | sed 's/^[^.]*\.//')

echo "K8S_CLUSTER_ROUTER_BASE : $K8S_CLUSTER_ROUTER_BASE"

ENCODED_API_SERVER_URL=$(echo "${API_SERVER_URL}" | base64)
ENCODED_CLUSTER_NAME=$(echo "my-cluster" | base64)

Expand Down
2 changes: 1 addition & 1 deletion e2e-tests/playwright/e2e/plugins/acr.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ test.describe('Test ACR plugin', () => {

uiHelper = new UIhelper(page);
common = new Common(page);
await common.loginAsGithubUser();
await common.loginAsGuest();
});

test('Verify ACR Images are visible', async () => {
Expand Down
6 changes: 3 additions & 3 deletions e2e-tests/playwright/e2e/plugins/ocm.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ const clusterDetails = {
clusterName: 'testCluster',
status: 'Ready',
platform: 'IBM',
cpuCores: '24',
memorySize: '94 Gi',
cpuCores: /CPU cores\d+/,
memorySize: /Memory size\d+ Gi/,
ocVersion: /^\d+\.\d+\.\d+$/,
};
let page: Page;
Expand All @@ -28,7 +28,7 @@ test.describe.serial('Test OCM plugin', () => {
uiHelper = new UIhelper(page);
clusters = new Clusters(page);

await common.loginAsGithubUser();
await common.loginAsGuest();
});
test('Navigate to Clusters and Verify OCM Clusters', async () => {
await uiHelper.openSidebar('Clusters');
Expand Down
9 changes: 3 additions & 6 deletions e2e-tests/playwright/support/pages/Clusters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,9 @@ export class Clusters {
);
}

async verifyOCMAvailableCardDetails(cpuCores: string, memorySize: string) {
await this.uiHelper.verifyTextinCard('Available', `CPU cores${cpuCores}`);
await this.uiHelper.verifyTextinCard(
'Available',
`Memory size${memorySize}`,
);
async verifyOCMAvailableCardDetails(cpuCores: RegExp, memorySize: RegExp) {
await this.uiHelper.verifyTextinCard('Available', cpuCores);
await this.uiHelper.verifyTextinCard('Available', memorySize);
}

async verifyOCMClusterInfo(clusterName: string, status: string) {
Expand Down
2 changes: 1 addition & 1 deletion e2e-tests/playwright/utils/Common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export class Common {

async loginAsGuest() {
await this.page.goto('/');

await this.waitForLoad(240000);
// TODO - Remove it after https://issues.redhat.com/browse/RHIDP-2043. A Dynamic plugin for Guest Authentication Provider needs to be created
this.page.on('dialog', async dialog => {
console.log(`Dialog message: ${dialog.message()}`);
Expand Down
6 changes: 5 additions & 1 deletion e2e-tests/playwright/utils/UIhelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,11 @@ export class UIhelper {
await expect(link).toBeVisible();
}

async verifyTextinCard(cardHeading: string, text: string, exact = true) {
async verifyTextinCard(
cardHeading: string,
text: string | RegExp,
exact = true,
) {
const locator = this.page
.locator(UIhelperPO.MuiCard(cardHeading))
.getByText(text, { exact: exact })
Expand Down

0 comments on commit 882cb2b

Please sign in to comment.