Skip to content
Open
Show file tree
Hide file tree
Changes from 32 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
9ee4b59
test: add e2e tests for roadmap and case studies page
anushkaaaaaaaa Jul 1, 2025
ec79300
Merge branch 'master' into roadcase
anushkaaaaaaaa Jul 1, 2025
dbd0c2c
Merge branch 'master' into roadcase
anushkaaaaaaaa Jul 9, 2025
7af8822
test: update test files
anushkaaaaaaaa Jul 9, 2025
49eacfa
Merge branch 'master' into roadcase
anushkaaaaaaaa Jul 18, 2025
5b642f4
Merge branch 'master' into roadcase
anushkaaaaaaaa Aug 18, 2025
b37981e
fix: small changes
anushkaaaaaaaa Aug 18, 2025
a259c4c
Merge branch 'roadcase' of https://github.com/anushkaaaaaaaa/website …
anushkaaaaaaaa Aug 18, 2025
2fc8695
Merge branch 'master' into roadcase
anushkaaaaaaaa Sep 3, 2025
cb3cfe1
fix: small change
anushkaaaaaaaa Sep 3, 2025
8a0bbe2
Merge branch 'roadcase' of https://github.com/anushkaaaaaaaa/website …
anushkaaaaaaaa Sep 3, 2025
033fc81
refactor: clean up formatting and improve readability in CaseStudiesP…
anushkaaaaaaaa Nov 7, 2025
1d57bca
refactor: remove unnecessary comments in verifyCardsLink method
anushkaaaaaaaa Nov 7, 2025
3097d8d
refactor: streamline CaseStudiesPage tests by removing unnecessary ho…
anushkaaaaaaaa Nov 7, 2025
adae259
refactor: simplify RoadmapPage tests by removing unnecessary homepage…
anushkaaaaaaaa Nov 7, 2025
3d27683
refactor: remove unnecessary header verification methods from Roadmap…
anushkaaaaaaaa Nov 7, 2025
a2e28a3
refactor: replace header verification with page load verification in …
anushkaaaaaaaa Nov 7, 2025
6c53cbb
refactor: add header verification methods to multiple page classes an…
anushkaaaaaaaa Nov 7, 2025
503c675
refactor: swap header verification with page load verification in Hom…
anushkaaaaaaaa Nov 7, 2025
7af2b72
Merge branch 'master' into roadcase
anushkaaaaaaaa Nov 7, 2025
74ab2b7
refactor: update CaseStudies and Roadmap page tests, improve link ver…
anushkaaaaaaaa Nov 7, 2025
ba10b08
Merge branch 'master' into roadcase
sambhavgupta0705 Nov 16, 2025
9ee7e07
Merge branch 'master' into roadcase
anushkaaaaaaaa Nov 16, 2025
c267ea3
refactor: simplify verifyHeader method in HomePage class
anushkaaaaaaaa Nov 16, 2025
0bd80ae
Merge branch 'master' into roadcase
anushkaaaaaaaa Nov 16, 2025
22a18e3
Merge branch 'master' into roadcase
anushkaaaaaaaa Nov 16, 2025
b93dcfb
Merge branch 'master' into roadcase
anushkaaaaaaaa Nov 17, 2025
102892c
Merge branch 'master' into roadcase
sambhavgupta0705 Nov 19, 2025
672c865
Merge branch 'master' into roadcase
anushkaaaaaaaa Nov 21, 2025
f0648f4
Merge branch 'master' into roadcase
anushkaaaaaaaa Nov 22, 2025
7c6629e
Merge branch 'master' into roadcase
anushkaaaaaaaa Nov 29, 2025
763bbff
Merge branch 'master' into roadcase
anushkaaaaaaaa Dec 15, 2025
07a712d
feat: implement base page classes for documentation, footer, header, …
anushkaaaaaaaa Dec 16, 2025
a6f2fec
Merge branch 'roadcase' of https://github.com/anushkaaaaaaaa/website …
anushkaaaaaaaa Dec 16, 2025
361638e
Merge branch 'master' into roadcase
anushkaaaaaaaa Dec 16, 2025
2e1a42e
refactor: streamline test cases by consolidating repetitive link veri…
anushkaaaaaaaa Dec 16, 2025
a0c9fd0
Merge branch 'roadcase' of https://github.com/anushkaaaaaaaa/website …
anushkaaaaaaaa Dec 16, 2025
20de86f
refactor: remove unnecessary comments from verifyLinks function
anushkaaaaaaaa Dec 16, 2025
4a68464
Merge branch 'master' into roadcase
anushkaaaaaaaa Dec 30, 2025
ec348ce
feat: add Cypress page objects for documentation and tools, and tests…
anushkaaaaaaaa Dec 30, 2025
8408905
Merge branch 'roadcase' of https://github.com/anushkaaaaaaaa/website …
anushkaaaaaaaa Dec 30, 2025
13aa724
test: add e2e tests for roadmap and case studies page
anushkaaaaaaaa Feb 2, 2026
b9f2d1b
merge: resolve conflict with master, update to v3.1.0-explorer
anushkaaaaaaaa Feb 7, 2026
df0819d
fix: update toolspage to use fixtures data instead of config
anushkaaaaaaaa Feb 7, 2026
f9574d3
resolve merge conflicts with master
anushkaaaaaaaa Feb 7, 2026
370b062
fix: rename 'Liquid' to 'AsyncAPI CLI' in tools.json
anushkaaaaaaaa Feb 7, 2026
abf49e7
Update cypress/pages/RoadmapPage.js
anushkaaaaaaaa Feb 7, 2026
b03385d
revert: change 'AsyncAPI CLI' back to 'Liquid' technology tag
anushkaaaaaaaa Feb 8, 2026
b54b0c4
Merge branch 'roadcase' of https://github.com/anushkaaaaaaaa/website …
anushkaaaaaaaa Feb 8, 2026
b72779c
fix: update import path for toolsData to use the correct configuratio…
anushkaaaaaaaa Feb 8, 2026
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
30 changes: 30 additions & 0 deletions cypress/RoadmapPage.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import RoadmapPage from './pages/RoadmapPage';

describe('RoadMap Page Navigation and Functionality', () => {
let roadmapPage;

beforeEach(() => {
roadmapPage = new RoadmapPage();
roadmapPage.visit();
});

it('User navigates to the RoadMap Page and verifies the header', () => {
roadmapPage.verifyPageLoaded();
});

it('User clicks on the community page link and verifies navigation', () => {
roadmapPage.verifyLink();
});

it('User verifies Outcome tooltip', () => {
roadmapPage.verifyTooltip(0);
});

it('User verifies Solution tooltip', () => {
roadmapPage.verifyTooltip(1);
});

it('User verifies Implementation tooltip', () => {
roadmapPage.verifyTooltip(2);
});
});
48 changes: 48 additions & 0 deletions cypress/casestudies.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import CaseStudiesPage from './pages/CaseStudiesPage';

let casestudiespage;

beforeEach(() => {
casestudiespage = new CaseStudiesPage();
casestudiespage.visit();
});

describe('Critical User Flows in CaseStudies Page', () => {
it('User navigates to the Case Studies Page and verifies the header', () => {
casestudiespage.verifyHeader();
});

it('User verifies FAQ link is visible and contains correct URL', () => {
casestudiespage.verifyFaqLink();
});

it('User verifies Cards link is visible and contains correct URL', () => {
casestudiespage.verifyCardsLink();
});

it('User verifies Submit a Pull Request Link is visible and contains correct URL', () => {
casestudiespage.verifySubmitPullRequestLink();
});
});

describe('Adopters Table', () => {
it('Navigates to the Case Studies page and scrolls down to the Adopters Table', () => {
casestudiespage.verifyScrollDown();
});
});

describe('Links under Resources Section', () => {
let links;

before(() => {
cy.fixture('caseStudiesLinks').then((data) => {
links = data;
});
});

it('Verifies all Links under Resources work', () => {
links.forEach(({ href, label }) => {
casestudiespage.verifyLinksWork(href, label);
});
});
});
82 changes: 82 additions & 0 deletions cypress/fixtures/caseStudiesLinks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
[
{
"href": "https://www.youtube.com/watch?v=_MwzLZMwFN8",
"label": "Video: Raiffeisen Bank - GitOps with AsyncAPI"
},
{
"href": "https://www.youtube.com/watch?v=m8I0fYjx6Cc",
"label": "Video: LEGO Group - Documentation as Configuration"
},
{
"href": "https://www.youtube.com/watch?v=qjarcJQVLOg",
"label": "Video: LEGO Group - Cross-Domain Events"
},
{
"href": "https://www.confluent.io/events/kafka-summit-apac-2021/self-service-events-and-decentralised-governance-with-asyncapi-a-real-world/",
"label": "Video: Bank of New Zealand - Self-service Events"
},
{
"href": "https://www.youtube.com/watch?v=yjHgT0n2BtA",
"label": "Video: Zora Robotics - MQTT APIs for IoT"
},
{
"href": "https://www.youtube.com/watch?v=SxTpGRaNIPo",
"label": "Video: Walmart and eBay - AsyncAPI Specification"
},
{
"href": "https://www.youtube.com/watch?v=0_7QZyKLPoE",
"label": "Video: Postman - Synapse Event Infrastructure"
},
{
"href": "https://drive.google.com/file/d/1AVCG9_fFtuOtrvZVZWENmU2aDT7C51Jr/view?usp=sharing",
"label": "Slides: Adobe - AsyncAPI and Modelina"
},
{
"href": "https://www.youtube.com/watch?v=m4KS6FSeTT4",
"label": "Video: Open University of Catalonia - Smart Ports"
},
{
"href": "https://www.youtube.com/watch?v=CGLlxYy66LY",
"label": "Video: Oracle - Data Replication"
},
{
"href": "https://www.asyncapi.com/blog/transfergo-asyncapi-story",
"label": "Article: TransferGo - AsyncAPI Story"
},
{
"href": "https://drive.google.com/file/d/1y67PI8NaITPPwZAiDF2Zs7ISfcIpqMV8/view?usp=sharing",
"label": "Slides: Kuehne+Nagel - GitOps for Kafka"
},
{
"href": "https://adidas.gitbook.io/api-guidelines/asynchronous-api-guidelines/kafka-asynchronous-guidelines/a_introduction/why-asyncapi",
"label": "Docs: Adidas - API Guidelines"
},
{
"href": "https://drive.google.com/file/d/1YzLwQZsMUXGwj_Lsqv-ZnvV2knuowWrS/view?usp=drive_link",
"label": "Slides: Morgan Stanley - WebSocket APIs"
},
{
"href": "https://www.asyncapi.com/casestudies/adeogroup",
"label": "Use Case: Adeo - Documentation Standards"
},
{
"href": "https://www.asyncapi.com/casestudies/hdiglobal",
"label": "Use Case: HDI Global SE - Documentation"
},
{
"href": "https://www.youtube.com/watch?v=KcYiD67gEh0&list=PLbi1gRlP7pig_nA0tRlr0hU_h5sB2HXcq&index=6",
"label": "Video: SAP - Event Catalog"
},
{
"href": "https://www.slideshare.net/slideshow/apidays-paris-2022-adding-a-mock-as-a-service-capability-to-your-api-strategy-portfolio-ludovic-pourrat-lombard-odier/255041645#4",
"label": "Slides: Lombard Odier - Mock as a Service"
},
{
"href": "https://github.com/siemens/rosita",
"label": "Code: Siemens AG - ROS2 Interfaces"
},
{
"href": "https://github.com/pagopa/p4pa-registries/blob/develop/asyncapi/generated.asyncapi.json",
"label": "Code: PagoPA - Event-Driven APIs"
}
]
4 changes: 4 additions & 0 deletions cypress/pages/BlogPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,9 @@ class BlogPage {
verifyPageLoaded() {
cy.contains('h1', 'Welcome to our blog!').should('be.visible');
}

verifyHeader() {
this.verifyPageLoaded();
}
}
export default BlogPage;
66 changes: 66 additions & 0 deletions cypress/pages/CaseStudiesPage.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,72 @@
class CaseStudiesPage {
visit() {
cy.visit('/casestudies');
}

verifyElementIsVisible(selector) {
cy.get(selector).should('be.visible');
}

verifyHeadingExists(headingText) {
cy.contains('h1', headingText).should('be.visible');
}

verifyElementHasAttribute(selector, attribute, value) {
cy.get(selector).should('have.attr', attribute, value);
}

verifyScrollDown() {
cy.contains('h1', 'Adopters').scrollIntoView().should('be.visible');
}

verifyLinkExists(linkName, linkUrl, index = 0) {
cy.get('[data-testid="CaseStudyCard-main"]')
.eq(index)
.within(() => {
cy.get(`img[alt*="${linkName.split(' ')[0]}"]`).should('exist');
})
.closest('a')
.should('have.attr', 'href', `${linkUrl}`);
}

verifyLinksWork(href, label) {
cy.get(`a[href="${href}"]`)
.first()
.should('exist')
.should('have.attr', 'href', href);
}

verifyFaqLink() {
cy.contains('a', 'FAQ')
.should('be.visible')
.should(
'have.attr',
'href',
'https://github.com/asyncapi/website/blob/master/README.md#case-studies',
);
}

verifySubmitPullRequestLink() {
cy.contains('a', 'submit a pull request')
.should('be.visible')
.should(
'have.attr',
'href',
'https://github.com/asyncapi/website/blob/master/config/usecases.yaml',
);
}

verifyCardsLink() {
this.verifyLinkExists('Adeo Group', 'casestudies/adeogroup', 0);
this.verifyLinkExists('HDI Global SE', 'casestudies/hdiglobal', 1);
}

verifyPageLoaded() {
cy.contains('h1', 'Case Studies').should('be.visible');
}

verifyHeader() {
this.verifyPageLoaded();
}
}
export default CaseStudiesPage;
9 changes: 6 additions & 3 deletions cypress/pages/CommunityPage.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
class CommunityPage {
verifyPageLoaded() {
cy.contains('h1','Home of #CommunityOps')
.should('be.visible');
cy.contains('h1', 'Home of #CommunityOps').should('be.visible');
}

verifyHeader() {
this.verifyPageLoaded();
}
}
export default CommunityPage;
export default CommunityPage;
7 changes: 7 additions & 0 deletions cypress/pages/DocsPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,24 +28,31 @@ class DocsPage extends BasePage {
goToConceptsSection() {
this.navigateToSection('Concepts', '/docs/concepts');
}

goToTutorialsSection() {
this.navigateToSection('Tutorials', '/docs/tutorials');
}

goToToolsSection() {
this.navigateToSection('Tools', '/docs/tools');
}

goToGuidesSection() {
this.navigateToSection('Guides', '/docs/guides');
}

goToReferenceSection() {
this.navigateToSection('Reference', '/docs/reference');
}

goToMigrationsSection() {
this.navigateToSection('Migration', '/docs/migration');
}

goToCommunitySection() {
this.navigateToSection('Community', '/docs/community');
}

verifyConceptSubsection({ href, label }) {
this.verifyLinkByLabel(href, label);
}
Expand Down
27 changes: 26 additions & 1 deletion cypress/pages/RoadmapPage.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,31 @@
class RoadmapPage {
visit() {
cy.visit('/roadmap');
}

verifyPageLoaded() {
cy.contains('h1', 'AsyncAPI becomes the #1 API specification for defining and developing APIs.').should('be.visible');
cy.contains(
'h1',
'AsyncAPI becomes the #1 API specification for defining and developing APIs.',
).should('be.visible');
}

verifyHeader() {
this.verifyPageLoaded();
}

verifyLink() {
cy.get('[data-testid="TextLink-href"]').should(
'have.attr',
'href',
'https://github.com/asyncapi/community',
);
}

verifyTooltip(index) {
cy.get('[data-testid="InlineHelp-icon"]').eq(index).trigger('mouseover');
cy.get('[data-testid="InlineHelp"]').should('be.visible');
}
}

export default RoadmapPage;
8 changes: 6 additions & 2 deletions cypress/pages/homepage.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,12 @@ class HomePage {
this.verifyElementIsVisible('[data-testid="Navbar-logo"]');
}

verifyHeader(text = headerText) {
this.verifyHeadingExists(text);
verifyHeader() {
this.verifyPageLoaded();
}

verifyPageLoaded() {
this.verifyHeadingExists(headerText);
}

verifyGithubStarButton(link = githubStarLink) {
Expand Down
Loading