Skip to content

Commit

Permalink
chore: speed up e2e tests with minimal cluster (#155)
Browse files Browse the repository at this point in the history
  • Loading branch information
UncleGedd authored Aug 6, 2024
1 parent 4d6122d commit b8aae8a
Show file tree
Hide file tree
Showing 7 changed files with 86 additions and 6 deletions.
20 changes: 18 additions & 2 deletions tasks/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ tasks:
- cmd: npm run test:install # install playwright
dir: ui
- task: setup:build-api
- task: setup:slim-cluster
- cmd: k3d cluster create
- task: deploy-load
- cmd: npm run test:integration
dir: ui

- name: go
description: "run api server unit tests"
actions:
Expand All @@ -31,3 +31,19 @@ tasks:
description: "build ui since embedded in main.go"
- task: go
- task: ui-unit

- name: deploy-load
description: "deploy some Zarf packages to test against"
actions:
- task: deploy-min-core
- cmd: uds zarf dev deploy
dir: ui/tests/packages/podinfo

- name: deploy-min-core
description: only run engine e2e tests
actions:
- cmd: rm -fr tmp && git clone --depth=1 https://github.com/defenseunicorns/uds-core.git tmp/uds-core
description: clone UDS Core
- cmd: npm i && npx pepr deploy --confirm
dir: tmp/uds-core
description: deploy UDS Core's Pepr module
2 changes: 1 addition & 1 deletion ui/playwright.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export default defineConfig({
url: `http://localhost:${port}`,
reuseExistingServer: !process.env.CI,
},
timeout: 5 * 1000,
timeout: 10 * 1000,
testDir: 'tests',
/* Run tests in files in parallel */
fullyParallel: true,
Expand Down
13 changes: 13 additions & 0 deletions ui/tests/packages/podinfo/exemptions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: uds.dev/v1alpha1
kind: Exemption
metadata:
name: podinfo2
namespace: uds-policy-exemptions
spec:
exemptions:
- policies:
- RequireNonRootUser
title: 'podinfo2'
matcher:
namespace: podinfo
name: '^podinfo.*'
14 changes: 14 additions & 0 deletions ui/tests/packages/podinfo/uds-package.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: uds.dev/v1alpha1
kind: Package
metadata:
name: podinfo
namespace: podinfo
spec:
network:
expose:
- service: podinfo
selector:
app.kubernetes.io/name: podinfo
gateway: tenant
host: podinfo
port: 9898
3 changes: 3 additions & 0 deletions ui/tests/packages/podinfo/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Values set to intentionally violate pepr policies
securityContext:
runAsNonRoot: false
34 changes: 34 additions & 0 deletions ui/tests/packages/podinfo/zarf.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
kind: ZarfPackageConfig
metadata:
name: test
description: |
used to load the cluster for e2e testing; using a local zarf.yaml for dev deploy
version: 0.0.1

components:
- name: podinfo
required: true
charts:
- name: podinfo
version: 6.4.0
namespace: podinfo
url: https://github.com/stefanprodan/podinfo.git
gitPath: charts/podinfo
valuesFiles:
- values.yaml
images:
- ghcr.io/stefanprodan/podinfo:6.4.0
manifests:
- name: uds-crs
files:
- exemptions.yaml
- uds-package.yaml
actions:
onDeploy:
after:
- wait:
cluster:
kind: deployment
name: podinfo
namespace: podinfo
condition: available
6 changes: 3 additions & 3 deletions ui/tests/sse.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,17 @@ async function deletePod(namespace: string, podName: string) {
test.describe('SSE and reactivity', async () => {
test('Pods are updated', async ({ page }) => {
await page.goto('/workloads/pods')
const originalPodName = await page.getByRole('cell', { name: 'minio' }).first().textContent()
const originalPodName = await page.getByRole('cell', { name: 'podinfo-' }).first().textContent()

// get pod name
expect(originalPodName).not.toBeNull()

// delete pod and wait for it to disappear
await deletePod('uds-dev-stack', originalPodName ?? '')
await deletePod('podinfo', originalPodName ?? '')
await expect(page.getByRole('cell', { name: originalPodName ?? '' })).toBeHidden()

// get new pod
const newPodName = await page.getByRole('cell', { name: 'minio' }).first().textContent()
const newPodName = await page.getByRole('cell', { name: 'podinfo' }).first().textContent()

expect(newPodName).not.toBeNull()
expect(newPodName).not.toEqual(originalPodName)
Expand Down

0 comments on commit b8aae8a

Please sign in to comment.