Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automate E2E Testing for Multiple OCP Versions in Nightly Build #1273

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading