Skip to content

Commit

Permalink
feat: Workflows showcase - additional examples (9, 5 - example page a…
Browse files Browse the repository at this point in the history
…nd longer test), missing NUnit workflow added (#6011)

* Cypress - demo page

* example test pages

* cypress video recording showcase extended, example test page updated

* showcase 9 WIP

* showcase 9 - template

* showcase 9, missing nunit definition added

* typo fixed
  • Loading branch information
tkonieczny authored Nov 6, 2024
1 parent 1f99e13 commit 7eb0098
Show file tree
Hide file tree
Showing 6 changed files with 215 additions and 8 deletions.
17 changes: 17 additions & 0 deletions test/cypress/executor-tests/cypress-13/cypress/e2e/demo-page.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
describe('Log in', () => {
it(`Log in with valid credentials`, () => {
const userData = {
username: "AdminUser",
password: "SomeVeryLongPassword123456",
}

cy.visit("https://testkube-test-page-login.pages.dev/")

cy.get('[data-testid="username"]').type(userData.username, { force: true })
cy.get('[data-testid="password"]').type(userData.password, { force: true })
cy.get('[data-testid="login-button"]').click()
cy.url().should('contain', '/demo')
cy.get('[data-testid="lorem-ipsum"]').should("contain.text", "Lorem ipsum");
cy.get('[data-testid="login-message"]').should('not.be.visible')
})
})
40 changes: 40 additions & 0 deletions test/examples/example-demo-page/testkube-test-page-login/demo.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Demo page - Login</title>
<style>
.center {
margin: auto;
width: 50%;
padding: 10px;
}
.border {
border: 1px solid grey;
}
.double-line {
line-height: 2;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script>
setTimeout(function() {
$('.hide').fadeOut('fast');
}, 2000);
</script>
</head>
<body>
<div class="center border">
<h1>Demo page</h1>
<p class="hide border" data-testid="login-message">
Welcome to the Demo Page! You have been successfully logged in.
</p>
<div data-testid="lorem-ipsum">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque in efficitur ipsum. Vestibulum urna velit, faucibus vel elit vitae, mollis eleifend arcu. Curabitur euismod orci a libero fermentum, ac vulputate lorem congue. Quisque a pellentesque leo. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi a lobortis nunc. Fusce maximus nibh tortor, id finibus mauris cursus ac. Fusce vitae diam neque. Morbi at ante vel nisl semper elementum a ac mauris. Nulla id accumsan tellus. Nulla a nisi eu urna laoreet ullamcorper. Suspendisse vitae diam aliquam, ultricies dolor vitae, consectetur magna. Donec id purus tortor.<br />
Vivamus posuere interdum nisi id commodo. Phasellus sit amet quam elementum, interdum quam a, viverra urna. Ut volutpat at libero id imperdiet. Donec condimentum ante ut luctus vulputate. Nullam suscipit tortor eget felis euismod efficitur. Donec turpis ante, cursus et placerat at, sodales eget dolor. Pellentesque id ornare arcu.<br />
Phasellus quis mi pretium, malesuada sem nec, congue mauris. Fusce quis sapien velit. Morbi sit amet consectetur orci. Integer aliquet elit ligula, in facilisis nunc commodo vel. Nulla at odio quis libero interdum finibus. In elementum est quis massa sodales tempus. In tristique tortor neque, vitae eleifend lacus aliquam eget. Donec at ipsum vel purus congue porta scelerisque ac dui. Praesent lobortis sed purus porttitor rutrum. Duis sagittis justo justo, eget feugiat risus placerat nec. Mauris ac diam quis quam porttitor accumsan a eget lorem. Donec et nibh velit. Nullam a sodales lorem. Cras dui orci, placerat vel blandit ut, sodales sed orci. Praesent vitae ligula venenatis, eleifend felis vel, tempor sapien. Integer facilisis finibus eleifend.<br />
Aliquam erat volutpat. Sed sed magna eu augue efficitur tempor sed vel nunc. Vestibulum blandit id risus ut mattis. Sed dapibus porttitor facilisis. Phasellus lacinia metus eu magna vulputate dapibus. Sed dictum, nunc at sollicitudin ultricies, nisi lorem accumsan libero, vitae consectetur dui sem eget nisl. Duis mollis egestas justo ut vulputate. Donec quis risus sit amet erat iaculis commodo id eget massa. Proin at quam faucibus ex tempor sagittis. Donec laoreet nibh non posuere auctor. Ut varius enim a scelerisque mattis. Pellentesque facilisis odio a risus sollicitudin, eget sagittis orci posuere. Donec posuere blandit libero a scelerisque.<br />
</div>
</div>
</div>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Demo page - Login</title>
<style>
.center {
margin: auto;
width: 50%;
border: 1px solid grey;
padding: 10px;
}
.double-line {
line-height: 2;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script>
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function logIn() {
$('.login-button').prepend('<i class="fa fa-spinner fa-spin" /> ')
await delay(1500);
window.location.href='demo.html'
}
</script>
</head>
<body>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

<div class="center">
<h1>Demo page - Login</h1>
<div class="double-line">
<label for="username">Username</label>
<input type="text" placeholder="Username" name="username" data-testid="username" required>
<br />
<label for="password">Password</label>
<input type="password" placeholder="Password" name="password" data-testid="password"required>
<br />
<input type="checkbox" id="remember_me" name="remember_me" data-testid="remember_me">
<label for="remember_me">Remember me</label><br />
<button onclick="logIn()" data-testid="login-button" class="login-button">Login</button>
</div>
</div>
</body>
</html>
32 changes: 32 additions & 0 deletions test/examples/example-demo-page/testkube-test-page/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Testkube test page - Lorem Ipsum</title>
</head>
<body>
<h1>Testkube test page - Lipsum</h1>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque in efficitur ipsum. Vestibulum urna velit, faucibus vel elit vitae, mollis eleifend arcu. Curabitur euismod orci a libero fermentum, ac vulputate lorem congue. Quisque a pellentesque leo. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi a lobortis nunc. Fusce maximus nibh tortor, id finibus mauris cursus ac. Fusce vitae diam neque. Morbi at ante vel nisl semper elementum a ac mauris. Nulla id accumsan tellus. Nulla a nisi eu urna laoreet ullamcorper. Suspendisse vitae diam aliquam, ultricies dolor vitae, consectetur magna. Donec id purus tortor.<br />

Vivamus posuere interdum nisi id commodo. Phasellus sit amet quam elementum, interdum quam a, viverra urna. Ut volutpat at libero id imperdiet. Donec condimentum ante ut luctus vulputate. Nullam suscipit tortor eget felis euismod efficitur. Donec turpis ante, cursus et placerat at, sodales eget dolor. Pellentesque id ornare arcu.<br />

Phasellus quis mi pretium, malesuada sem nec, congue mauris. Fusce quis sapien velit. Morbi sit amet consectetur orci. Integer aliquet elit ligula, in facilisis nunc commodo vel. Nulla at odio quis libero interdum finibus. In elementum est quis massa sodales tempus. In tristique tortor neque, vitae eleifend lacus aliquam eget. Donec at ipsum vel purus congue porta scelerisque ac dui. Praesent lobortis sed purus porttitor rutrum. Duis sagittis justo justo, eget feugiat risus placerat nec. Mauris ac diam quis quam porttitor accumsan a eget lorem. Donec et nibh velit. Nullam a sodales lorem. Cras dui orci, placerat vel blandit ut, sodales sed orci. Praesent vitae ligula venenatis, eleifend felis vel, tempor sapien. Integer facilisis finibus eleifend.<br />

Aliquam erat volutpat. Sed sed magna eu augue efficitur tempor sed vel nunc. Vestibulum blandit id risus ut mattis. Sed dapibus porttitor facilisis. Phasellus lacinia metus eu magna vulputate dapibus. Sed dictum, nunc at sollicitudin ultricies, nisi lorem accumsan libero, vitae consectetur dui sem eget nisl. Duis mollis egestas justo ut vulputate. Donec quis risus sit amet erat iaculis commodo id eget massa. Proin at quam faucibus ex tempor sagittis. Donec laoreet nibh non posuere auctor. Ut varius enim a scelerisque mattis. Pellentesque facilisis odio a risus sollicitudin, eget sagittis orci posuere. Donec posuere blandit libero a scelerisque.<br />

Ut in lobortis leo. Nunc eu nunc non diam egestas vehicula. Suspendisse mollis nec mauris in iaculis. Aliquam sed lectus tellus. Curabitur euismod mauris id sapien dignissim vulputate. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Mauris ut arcu elit. Vivamus vulputate vel quam quis eleifend. Quisque eget nisl felis. Vivamus eget turpis gravida, bibendum leo in, sollicitudin diam. Sed ut maximus metus. Curabitur elit neque, fermentum vehicula ipsum vitae, tristique accumsan purus. Praesent nec nunc in libero pulvinar feugiat sodales nec libero. Donec ultrices ut sem et vestibulum. Etiam sed blandit orci. Cras sollicitudin congue lorem ut gravida.<br />

Etiam diam tortor, feugiat at rhoncus eget, congue et leo. Mauris turpis erat, iaculis sed scelerisque at, pellentesque ut lorem. Duis vehicula magna sem, nec feugiat neque tincidunt et. Quisque feugiat tellus et ante sodales, ac imperdiet purus dignissim. Quisque sit amet odio tincidunt, dictum est facilisis, lacinia augue. Phasellus sagittis turpis id nulla porta porta. Mauris semper purus quis dictum mattis. Nunc quis nulla odio. Sed vel vulputate ipsum, id lacinia lacus. Nunc et mauris porttitor, placerat mi vitae, accumsan dolor. Pellentesque at bibendum lacus, a sollicitudin nunc. Pellentesque metus ex, aliquet dignissim vestibulum ullamcorper, pulvinar sed leo. Aliquam venenatis interdum metus, ac blandit nisl iaculis et.<br />

Cras at pellentesque mi. Integer tristique, urna in dictum euismod, augue massa ultrices nulla, ac tristique libero enim vitae lacus. Aliquam eros lacus, auctor non nisi vitae, viverra eleifend lacus. Nulla luctus, ante a elementum convallis, mi turpis egestas dui, vitae lacinia leo nisl vitae neque. Sed ultrices turpis arcu, semper pulvinar enim commodo non. Etiam sodales dui euismod pellentesque tempor. Sed sit amet mattis orci. Mauris semper justo et vulputate sagittis. Pellentesque gravida ipsum sed ante mollis tempor eu vitae turpis. Ut imperdiet non neque at luctus. Nunc cursus lorem orci, sit amet volutpat ante auctor eget. Nulla porta, felis dapibus dictum laoreet, lectus diam cursus eros, sed rutrum lorem risus lacinia lacus. Donec a lorem eget justo aliquam laoreet nec ut diam. Suspendisse finibus elit in justo tempus condimentum. Integer quam risus, efficitur in porttitor in, efficitur eget mi.<br />

Pellentesque vestibulum ipsum in egestas ultrices. Proin nulla ipsum, faucibus eget libero a, rhoncus rhoncus libero. In tincidunt sed metus sit amet aliquam. Integer non imperdiet lacus. Sed sollicitudin velit euismod tortor molestie, non semper lectus vestibulum. Vivamus finibus congue condimentum. Ut sollicitudin, velit a aliquet dignissim, nulla tortor scelerisque orci, vitae dapibus quam massa vitae orci. Integer sed ultrices enim.<br />

Nulla rutrum ligula nec magna facilisis sollicitudin sed quis erat. Duis nec ornare libero, sit amet imperdiet neque. Proin vitae imperdiet neque. Morbi vitae egestas magna, non semper mauris. Mauris vitae lacinia nunc. Suspendisse potenti. Nullam quis sapien nec augue lacinia faucibus. Aenean vehicula, felis et dapibus congue, nisl sem pulvinar nunc, in eleifend enim sem ac neque. Cras imperdiet, neque ac congue congue, metus ante sollicitudin nisi, sed vulputate dolor quam et risus. Nullam et ipsum dignissim, imperdiet enim ultricies, aliquam sem. Quisque sit amet cursus lectus. Aliquam dapibus ligula eget turpis tempus iaculis.<br />

Cras mattis blandit viverra. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean sit amet pretium mauris. Suspendisse et gravida risus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nullam euismod eros sed nulla ultrices commodo. Proin lobortis lacus et erat eleifend, sit amet faucibus ex rutrum.<br />

Duis lacinia commodo sapien. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed dui metus, sodales eget egestas nec, posuere pulvinar nisi. Praesent porta, lorem vitae ultrices auctor, dui metus pulvinar magna, maximus tempus elit felis non arcu. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce sed eros dictum magna auctor lobortis. Mauris ut posuere arcu. Maecenas molestie nisl quis est posuere rutrum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris tempus sem sit amet nulla finibus malesuada.<br />

Cras ac auctor orci, in eleifend purus. Nam pulvinar lobortis purus non consectetur. Nam eros metus, ultricies at maximus rutrum, pretium nec mi. Nunc rhoncus, tellus id pellentesque blandit, eros ligula laoreet tellus, sit amet tincidunt eros tortor quis nisl. Nunc finibus mi magna, sit amet rutrum felis pharetra et. Pellentesque efficitur non augue vel fringilla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam at lacus eget dui egestas dignissim pharetra sed nibh. Quisque eu interdum tellus, eget elementum tellus. Vivamus pretium ipsum lorem, sit amet euismod leo placerat vitae. Aenean ut odio non felis lobortis mollis non vitae risus. Donec id nisl in nisi tincidunt bibendum et in risus. Aliquam tempor nisl purus. Curabitur tincidunt feugiat diam a gravida. Quisque at ex nulla. Donec at accumsan ex.
</body>
</html>
62 changes: 54 additions & 8 deletions test/examples/showcase/crd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ spec:
requests:
cpu: 2
memory: 2Gi
workingDir: /data/repo/test/cypress/executor-tests/cypress-13 # TODO: use more "real" SUT, and and more complex test
workingDir: /data/repo/test/cypress/executor-tests/cypress-13
events:
- cronjob:
cron: "35 */4 * * *" # every 4 hours
Expand All @@ -206,6 +206,8 @@ spec:
- NON_CYPRESS_ENV=NON_CYPRESS_ENV_value
- --config
- video=true
- --spec
- cypress/e2e/demo-page.cy.js
env:
- name: CYPRESS_CUSTOM_ENV
value: CYPRESS_CUSTOM_ENV_value
Expand Down Expand Up @@ -450,6 +452,9 @@ spec:
cpu: 512m
memory: 512Mi
workingDir: /data/repo/test/nunit/nunit-project/ExampleProject
events:
- cronjob:
cron: "52 */4 * * *" # every 4 hours
steps:
- name: Run tests
shell: dotnet test --logger:"junit;LogFilePath=nunit-report/nunit-junit-report.xml"
Expand Down Expand Up @@ -494,10 +499,51 @@ spec:
- '**/*'
# **ShowCase 7: Passing data between steps. (testsuite like)**

# **ShowCase 8: Security Report from ZaP Proxy**

# e.g., there's a ZAP test that produces a security report artifact.

# **ShowCase 9: Running Tests Across Multiple Environments**

# e.g., that example we created for Coreweave where there could be a Test Worklfow triggering Workflows in other environments in parallel
---
kind: TestWorkflowTemplate
apiVersion: testworkflows.testkube.io/v1
metadata:
name: template-trigger-remote-workflow
labels:
demo: showcase-9
spec:
config:
apiToken:
type: string
sensitive: true
environmentId:
type: string
organizationId:
type: string
rootDomain:
type: string
default: testkube.io
workflowToRun:
type: string
steps:
- run:
image: kubeshop/testkube-cli:latest
shell: |
testkube set context \
--api-key {{ config.apiToken }} \
--root-domain {{ shellquote(config.rootDomain) }} \
--org-id {{ config.organizationId }} \
--env-id {{ config.environmentId }}
testkube run tw {{ config.workflowToRun }} -f
---
kind: TestWorkflow
apiVersion: testworkflows.testkube.io/v1
metadata:
name: trigger-remote-workflow-with-template
labels:
demo: showcase-9
spec:
steps:
- name: Run tests
template:
name: template-trigger-remote-workflow
config:
workflowToRun: 'postman-workflow-smoke'
apiToken: '{{ secret("paris-demo-testkube-cloud-basic-access-key", "key") }}'
organizationId: 'tkcorg_539cb664a4446f37'
environmentId: 'tkcenv_84019fff03aac934'
26 changes: 26 additions & 0 deletions test/nunit/crd-workflow/crd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
apiVersion: testworkflows.testkube.io/v1
kind: TestWorkflow
metadata:
name: nunit-workflow-smoke-junit-report
labels:
core-tests: workflows
spec:
content:
git:
uri: https://github.com/kubeshop/testkube
revision: main
paths:
- test/nunit/nunit-project/ExampleProject
container:
image: bitnami/dotnet-sdk:8-debian-12
resources:
requests:
cpu: 512m
memory: 512Mi
workingDir: /data/repo/test/nunit/nunit-project/ExampleProject
steps:
- name: Run tests
shell: dotnet test --logger:"junit;LogFilePath=nunit-report/nunit-junit-report.xml"
artifacts:
paths:
- 'nunit-report/*'

0 comments on commit 7eb0098

Please sign in to comment.