Skip to content

Commit

Permalink
test: adding PR check scripts, github action and login code, updating…
Browse files Browse the repository at this point in the history
… tests
  • Loading branch information
Katka92 committed Jan 17, 2025
1 parent 4609b37 commit 78ef1b2
Show file tree
Hide file tree
Showing 16 changed files with 360 additions and 451 deletions.
21 changes: 21 additions & 0 deletions .github/workflows/base-test-image.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Build and Push Base Test Image

# trigger manually
on: workflow_dispatch

jobs:
base-image:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v4

- name: Build and Push Base Image
env:
USERNAME=${{ secrets.QUAY_BOT_USERNAME }}
TOKEN=${{ secrets.QUAY_BOT_TOKEN }}
run: |
cd e2e-tests
podman login -u="$USERNAME" -p="$TOKEN" quay.io
podman build -t quay.io/konflux_ui_qe/konflux-ui-tests-base:latest -f BaseDockerfile
podman push quay.io/konflux_ui_qe/konflux-ui-tests-base:latest
2 changes: 2 additions & 0 deletions .github/workflows/post-merge.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,5 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }}
flags: unittests
fail_ci_if_error: true

# - name: Build E2E Test Image (if tests changed)
141 changes: 141 additions & 0 deletions .github/workflows/pr-check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
name: PR Check Test

on:
pull_request_target:
types: [opened, synchronize, reopened, labeled]

jobs:
# check-org-membership:
# runs-on: ubuntu-latest
# outputs:
# org-member: ${{ steps.org-check.outputs.org-member }}
# steps:
# - name: Check if PR author is a member of the organization
# continue-on-error: true
# id: org-check
# run: |
# ORG="${{ github.repository_owner }}"
# AUTHOR="${{ github.event.pull_request.user.login }}"
# if ! gh api /orgs/$ORG/members/$AUTHOR; then
# echo '### ❌ PR author is not a member of GitHub organization' >> $GITHUB_STEP_SUMMARY
# exit 1
# fi
# echo "org-member=true" >> $GITHUB_OUTPUT
# env:
# GITHUB_TOKEN: ${{ secrets.HAC_TEST_GH_TOKEN }}

e2e-test:
# if: ${{ (needs.check-org-membership.outputs.org-member == 'true') || (github.event.pull_request.user.login == 'renovate[bot]') || contains(github.event.pull_request.labels.*.name, 'ok-to-test') }}
# needs: check-org-membership
runs-on: ubuntu-latest
steps:
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
docker-images: false

# konflux-ci is cloned to /home/runner/work/konflux-ui/konflux-ui
# as it have to be at home folder to use helm/kind-action@v1 action
- name: Checkout Repository
uses: actions/checkout@v4
with:
repository: 'konflux-ci/konflux-ci'
ref: 'main'

- name: Disable AppArmor
# works around a change in ubuntu 24.04 that restricts Linux namespace access
# for unprivileged users
run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0

- name: Create k8s Kind Cluster
uses: helm/kind-action@v1
with:
config: kind-config.yaml

- name: Show version information
run: |
kubectl version
kind version
- name: List namespaces
run: |
kubectl get namespace
- name: Deploying Dependencies
run: |
./deploy-deps.sh
- name: List namespaces
run: |
kubectl get namespace
- name: Wait for the dependencies to be ready
run: |
./wait-for-all.sh
- name: WORKAROUND - Set up tkn cli for the following task
uses: tektoncd/actions/setup-tektoncd-cli@main
with:
version: latest

- name: WORKAROUND - Remove clair-scan task from docker-pipeline
run: |
./test/e2e/customize-docker-pipeline.sh
- name: Deploying Konflux
run: |
./deploy-konflux.sh
- name: List namespaces
run: |
kubectl get namespace
- name: Deploy test resources
run: |
./deploy-test-resources.sh
- name: Prepare resources for E2E tests
# Sets secrets, deploys image controller and setup smee.
env:
APP_ID: ${{ secrets.GH_APP_ID }}
APP_PRIVATE_KEY: ${{ secrets.GH_APP_PRIVATE_KEY }}
APP_WEBHOOK_SECRET: ${{ secrets.GH_APP_WEBHOOK_SECRET }}
QUAY_ORG: ${{ secrets.QUAY_TEST_ORG }}
QUAY_TOKEN: ${{ secrets.QUAY_TOKEN_TEST }}
SMEE_CHANNEL: ${{ secrets.SMEE_URL }}
run: |
./test/e2e/prepare-e2e.sh
# konflux-ui repo is cloned to /home/runner/work/konflux-ui/konflux-ui/konflux-ui
- name: Checkout Konflux-UI Repository
uses: actions/checkout@v4
with:
ref: "${{ github.event.pull_request.head.sha }}"
path: 'konflux-ui'

- name: Install Konflux-UI and run tests
env:
CYPRESS_GH_TOKEN: ${{ secrets.GH_TOKEN }}
TARGET_BRANCH: ${{ github.base_ref }}
PR_NUMBER: ${{ github.event.number }}
HEAD_SHA: "${{ github.event.pull_request.head.sha }}"
CYPRESS_USERNAME: "${{ secrets.CYPRESS_USERNAME }}"
CYPRESS_PASSWORD: "${{ secrets.CYPRESS_PASSWORD }}"
run: |
./konflux-ui/pr_check.sh
- name: Generate error logs
if: ${{ !cancelled() }}
run: |
.generate-err-logs.sh
cp -r konflux-ui/artifacts logs
- name: Archive logs
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: logs
path: logs
21 changes: 21 additions & 0 deletions connect_to_local_konflux.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Change configs to connect the UI with locally running Konflux
# Mainly for the PR check but can be used locally too
echo "Patching .env and webpack.dev.config.js"
cat > .env << EOL
AUTH_URL=https://127.0.0.1:9443/
REGISTRATION_URL=https://127.0.0.1:9443/
PROXY_URL=https://127.0.0.1:9443/
PROXY_WEBSOCKET_URL=wss://127.0.0.1:9443
EOL

# regex cheatsheet
# [^ ].* - take everything before the text but leave spaces
# 0, - replace just the first occurence
#
sed -i "s%[^ ].*\/oauth2\/.*%context: (path) => path.includes('/oauth2/') || path.includes('/idp/'),%g" webpack.dev.config.js
sed -i '0,/autoRewrite: false,/s//autoRewrite: true,/' webpack.dev.config.js
sed -i "s/[^ ].*stone-stg-rh01.*/'localhost:9443',/" webpack.dev.config.js
sed -i "s/[^ ].*stone-stg-rh01.*/'localhost:9443',/" webpack.dev.config.js
sed -i "s/[^ ].*DEV_SERVER_PORT}\/oauth2\`,/\`localhost:\${DEV_SERVER_PORT}\`,/" webpack.dev.config.js

echo "Patching done, UI is connected to locally running Konflux."
8 changes: 8 additions & 0 deletions e2e-tests/BaseContainerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
ARG DEFAULT_CHROME_VERSION='131.0.6778.139-1'

FROM cypress/factory:5.1.1

RUN apt update && \
apt install curl jq python3 python3-venv python3-pip xauth skopeo -y

RUN apt install python3-requests python3-click -y
6 changes: 3 additions & 3 deletions e2e-tests/Dockerfile → e2e-tests/Containerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
FROM quay.io/hacdev/hac-tests:base
FROM quay.io/konflux_ui_qe/konflux-ui-tests-base:latest

RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && \
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

RUN wget "https://github.com/sigstore/cosign/releases/download/v2.0.0/cosign-linux-amd64" && \
RUN wget "https://github.com/sigstore/cosign/releases/download/v2.4.0/cosign-linux-amd64" && \
mv cosign-linux-amd64 /usr/local/bin/cosign && \
chmod +x /usr/local/bin/cosign

Expand All @@ -23,4 +23,4 @@ WORKDIR /tmp/
COPY --chown=node:root --chmod=775 entrypoint.sh /tmp/

ENTRYPOINT ["/tmp/entrypoint.sh"]
CMD [""]
CMD [""]
2 changes: 1 addition & 1 deletion e2e-tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,4 @@ Job history is available [here](https://prow.ci.openshift.org/job-history/gs/ori
## Reporting issues
If you find a problem with the tests, feel free to open an issue at the [Konflux-UI Jira project](https://issues.redhat.com/projects/KFLUXUI). You can set the label as `qe` to indicate it is a quality problem.

<!-- If you discover a production bug thanks to a test failure, please label any issue created for that bug as `ci-fail`. That way we can see all this automation has actually generated some value. -->
<!-- If you discover a production bug thanks to a test failure, please label any issue created for that bug as `ci-fail`. That way we can see all this automation has actually generated some value. -->
15 changes: 9 additions & 6 deletions e2e-tests/cypress.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,16 +133,16 @@ export default defineConfig({
});

const defaultValues: { [key: string]: string | boolean } = {
KONFLUX_BASE_URL: 'https://prod.foo.redhat.com:1337/preview/application-pipeline',
USERNAME: '',
PASSWORD: '',
KONFLUX_BASE_URL: 'https://localhost:9443',
USERNAME: '[email protected]',
PASSWORD: 'password',
GH_USERNAME: 'hac-test',
GH_PASSWORD: '',
GH_TOKEN: '',
GH_SETUP_KEY: '',
KUBECONFIG: '~/.kube/appstudio-config',
CLEAN_NAMESPACE: 'false',
PR_CHECK: false,
PR_CHECK: '',
PERIODIC_RUN: false,
resolution: 'high',
REMOVE_APP_ON_FAIL: false,
Expand All @@ -161,8 +161,11 @@ export default defineConfig({
}

config.env.HAC_WORKSPACE = config.env.USERNAME.toLowerCase();
config.env.HAC_NAMESPACE = `${config.env.HAC_WORKSPACE}-tenant`;

if (config.env.PR_CHECK === true) {
config.env.HAC_NAMESPACE = `user-ns1`;
} else {
config.env.HAC_NAMESPACE = `${config.env.HAC_WORKSPACE}-tenant`;
}
if (
config.env.PR_CHECK === true &&
config.reporterOptions.reportportalAgentJsCypressReporterOptions
Expand Down
5 changes: 4 additions & 1 deletion e2e-tests/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,14 @@ else
fi

npx cypress run $args
echo "Test run finished, dealing with artifacts..."

if [ -d "/e2e/cypress" ]; then
echo "Cypress folder found, copying artifacts"
cp -a /e2e/cypress/* /tmp/artifacts
chmod -R a+rwx /tmp/artifacts
chmod -R a+rwx /e2e/cypress
else
echo "Copying artifacts"
cp -a /tmp/e2e/cypress/* /tmp/artifacts
fi
fi
2 changes: 1 addition & 1 deletion e2e-tests/support/commands/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ before(() => {
);

if (Cypress.env('PR_CHECK') || Cypress.env('PERIODIC_RUN')) {
Login.prCheckLogin();
Login.localKonfluxLogin();
} else {
Login.login();
}
Expand Down
20 changes: 10 additions & 10 deletions e2e-tests/support/pageObjects/global-po.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@ export const alertTitle = '.pf-v5-c-alert__title';

export const consentButton = '[id="truste-consent-button"]';

export const loginPO = {
usernameForm: '.pf-c-login__main',
username: '#rh-username-verification-form',
nextButton: '#login-show-step2',
passwordForm: '#login-show-step2',
password: '#rh-password-verification-form',
loginButton: '#rh-password-verification-submit-button',
export const stageLoginPO = {
username: '#username',
password: '#password',
loginButton: '#submit',
dex: `button[type="submit"]`,
loginWithSso: `a[title="Log in with redhat-sso"]`,
};

export const kcLoginPO = {
username: '#username',
export const localKonfluxLoginPO = {
username: '#login',
password: '#password',
loginButton: '#kc-login',
loginButton: '#submit-login',
dex: `button[type="submit"]`,
};

export const waits = {
Expand Down
17 changes: 7 additions & 10 deletions e2e-tests/tests/basic-happy-path.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,21 @@ import { UIhelper } from '../utils/UIhelper';

describe('Basic Happy Path', () => {
const applicationName = Common.generateAppName();
// const applicationName = "test-app-173261349";
const applicationDetailPage = new ApplicationDetailPage();
const integrationTestsTab = new IntegrationTestsTabPage();
const componentPage = new ComponentPage();

const sourceOwner = 'hac-test';
const sourceRepo = 'devfile-sample-code-with-quarkus';
const repoName = Common.generateAppName(sourceRepo);
// const repoName = "java-quarkus-173261349"
const repoOwner = 'redhat-hac-qe';
const publicRepo = `https://github.com/${repoOwner}/${repoName}`;
// const publicRepo = 'https://github.com/redhat-hac-qe/devfile-sample-code-with-quarkus-173218691'
const componentName: string = Common.generateAppName('java-quarkus');
// const componentName = "java-quarkus-173261349"
const piplinerunlogsTasks = ['init', 'clone-repository', 'build-container', 'show-sbom'];
const quarkusDeplomentBody = 'Congratulations, you have created a new Quarkus cloud application';
// this is default option and should be the fastest one
const pipeline = 'docker-build-oci-ta';
// const pipeline = 'docker-build-oci-ta';
const pipeline = 'docker-build';

before(function () {
APIHelper.createRepositoryFromTemplate(sourceOwner, sourceRepo, repoOwner, repoName);
Expand All @@ -52,6 +49,8 @@ describe('Basic Happy Path', () => {
allTestsSucceeded = false;
}
});
cy.log('allTestsSucceeded: ', allTestsSucceeded);
cy.log('REMOVE_APP_ON_FAIL: ', Cypress.env('REMOVE_APP_ON_FAIL'));
if (allTestsSucceeded || Cypress.env('REMOVE_APP_ON_FAIL')) {
// use UI to remove the application to test the flow
Common.navigateTo(NavItem.applications);
Expand All @@ -60,7 +59,7 @@ describe('Basic Happy Path', () => {
cy.get(actions.deleteModalInput).clear().type(applicationName);
cy.get(actions.deleteModalButton).click();
cy.get(`[data-id="${applicationName}"]`).should('not.exist');
APIHelper.deleteGitHubRepository(repoName);
// APIHelper.deleteGitHubRepository(repoName);
}
});

Expand Down Expand Up @@ -123,9 +122,7 @@ describe('Basic Happy Path', () => {
'This PR was auto-generated by appstudio-ci__bot',
);

// Disabled due to bug https://issues.redhat.com/browse/KFLUXBUGS-1307
// componentPage.verifyAndWaitForPRMerge();

componentPage.verifyAndWaitForPRMerge();
componentPage.closeModal();
// Go back to Components tab
Applications.clickBreadcrumbLink(applicationName);
Expand Down Expand Up @@ -194,7 +191,7 @@ describe('Basic Happy Path', () => {
ComponentsTabPage.openComponent(componentName);
});

it('Verify deployed image exists', () => {
it.skip('Verify deployed image exists', () => {
ComponentDetailsPage.checkBuildImage();
});
});
Expand Down
3 changes: 2 additions & 1 deletion e2e-tests/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"cypress",
"node",
"cypress-axe"
]
],
"baseUrl": "https://localhost:8080"
},
"include": [
"./**/*.ts"
Expand Down
Loading

0 comments on commit 78ef1b2

Please sign in to comment.