Skip to content

test: add e2e tests for roadmap and case studies page#4215

Open
anushkaaaaaaaa wants to merge 58 commits intoasyncapi:masterfrom
anushkaaaaaaaa:roadcase
Open

test: add e2e tests for roadmap and case studies page#4215
anushkaaaaaaaa wants to merge 58 commits intoasyncapi:masterfrom
anushkaaaaaaaa:roadcase

Conversation

@anushkaaaaaaaa
Copy link
Copy Markdown
Contributor

@anushkaaaaaaaa anushkaaaaaaaa commented Jul 1, 2025

Description
I have added E2E tests using Cypress for Roadmap Page and Case Studies Page to ensure functionality and correct rendering.

Related issue(s)

Summary by CodeRabbit

Release Notes

  • Tests
    • Added comprehensive test suites for Roadmap Page and Case Studies page functionality, including navigation and link verification.
    • Enhanced testing coverage for Documentation, Blog, and Tools sections with improved helper methods and assertions.
    • Reorganized test data structure and improved test infrastructure for better maintainability.

@netlify
Copy link
Copy Markdown

netlify bot commented Jul 1, 2025

Deploy Preview for asyncapi-website ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 40e4b3c
🔍 Latest deploy log https://app.netlify.com/projects/asyncapi-website/deploys/69c177686a12470008a7d5ff
😎 Deploy Preview https://deploy-preview-4215--asyncapi-website.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Jul 1, 2025

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR introduces new E2E tests for RoadMap and Case Studies pages, refactors base page classes with semantic naming (BasePage → specialized classes), extends page object verification methods, migrates fixture data from cypress/fixtures to cypress/data directory, and removes global Cypress command setup from support files.

Changes

Cohort / File(s) Summary
New E2E Test Files
cypress/RoadmapPage.cy.js, cypress/casestudies.cy.js
Added comprehensive test suites for RoadMap and Case Studies pages with dynamic tooltip verification and link navigation tests.
Case Studies Page Object
cypress/pages/CaseStudiesPage.js
Extended with 8 new verification methods including visit(), verifyHeader(), verifyScrollDown(), verifyCardLink(), verifyResourceLink(), verifyFaqLink(), verifySubmitPullRequestLink(), and verifyCardsLink().
Roadmap Page Object
cypress/pages/RoadmapPage.js
Added visit(), verifyCommunityLink(), and verifyTooltip(index) methods for page navigation and tooltip verification.
Base Page Class Refactoring
cypress/pages/BaseDocsPage.js, cypress/pages/BaseFooterPage.js, cypress/pages/BaseHeaderPage.js, cypress/pages/BaseToolsPage.js
Renamed classes from generic BasePage to semantic names (BaseDocsPage, BaseFooterPage, BaseHeaderPage, BaseToolsPage) with updated exports; BaseHeaderPage visit() method now accepts optional path parameter.
Page Object Inheritance Updates
cypress/pages/DocsPage.js, cypress/pages/header.js, cypress/pages/Footer.js
Updated base class imports and inheritance to use newly renamed base classes; DocsPage extended with 6 new section navigation methods (goToTutorialsSection, goToToolsSection, etc.).
Blog and Base Page Extensions
cypress/pages/BlogPage.js, cypress/pages/BasePage.js
Added verifyHeader() method to BlogPage; added three utility methods to BasePage: getLink(), scrollToElement(), scrollToText().
Tools Page Updates
cypress/pages/ToolsPage.js
Removed verifyHeader() method; updated label text from 'View Github' to 'View GitHub'.
Test Structure Updates
cypress/docspage.cy.js, cypress/footer.cy.js
Removed redundant test for explorer card link in docspage.cy.js; refactored footer.cy.js to use data-driven test generation for link groups via loop.
Fixture Configuration and Data
cypress.config.js, cypress/data/caseStudiesLinks.json
Added fixturesFolder configuration pointing to cypress/data; created new fixture file with 82 lines of case study links organized by resource type.
Fixture Path Migrations
cypress/homepage.cy.js, cypress/pages/toolsGenerator.js, cypress/pages/toolsModelina.js, cypress/tools_*.cy.js
Updated fixture import paths from cypress/fixtures/ to cypress/data/ across 8 files (tools_cli.cy.js, tools_generator.cy.js, tools_github_actions.cy.js, tools_modelina.cy.js, tools_parsers.cy.js).
Cypress Setup Cleanup
cypress/support/e2e.js
Removed global setup header comments and import statement for ./commands; effectively cleared automatic command loading.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • derberg
  • princerajpoot20
  • ashmitjsg
  • akshatnema
  • sambhavgupta0705
  • anshgoyalevil
  • vishvamsinh28
  • Mayaleeeee

Poem

🐰 With whiskers twitching, we test and refactor,
New RoadMap tests hop through every chapter,
Base classes renamed with semantic delight,
Fixtures migrated to organize just right,
A hop and a skip through the Cypress warren! ✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title clearly and specifically describes the main change: adding end-to-end tests for two specific pages (roadmap and case studies). It is concise, meaningful, and directly related to the primary objective of the changeset.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov
Copy link
Copy Markdown

codecov bot commented Jul 1, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (eb7c53f) to head (558ade6).

Additional details and impacted files
@@            Coverage Diff            @@
##            master     #4215   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           22        22           
  Lines          830       830           
  Branches       159       159           
=========================================
  Hits           830       830           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@anushkaaaaaaaa
Copy link
Copy Markdown
Contributor Author

CaseStudiesPage.js.-.asyncapi.-.Visual.Studio.Code.2025-07-01.15-00-24.mp4

casestudies and roadmap page tests

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (5)
cypress/pages/homepage.js (1)

25-33: Consider more specific selectors for better test reliability.

The navigation methods follow good page object patterns, but using text-based selectors could be fragile if the link text changes.

Consider using more specific selectors if available:

  goToCaseStudiesPage() {
-   cy.contains('a', 'Case Studies').click();
+   cy.get('[data-testid="nav-case-studies"]').click(); // if data-testid exists
    return new CaseStudiesPage();
  }

  goToRoadmapPage() {
-   cy.contains('a', 'Roadmap').click();
+   cy.get('[data-testid="nav-roadmap"]').click(); // if data-testid exists
    return new RoadmapPage();
  }

If data-testids are not available, the current approach is acceptable for this use case.

cypress/RoadmapPage.cy.js (1)

22-32: Add missing semicolons for consistency.

Missing semicolons in method calls should be added for code consistency.

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

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

  it('User verifies Implementation tooltip', () => {
-   roadmapPage.verifyTooltip(2)
+   roadmapPage.verifyTooltip(2);
  });
cypress/pages/roadmap.js (1)

15-21: Consider adding explicit wait for tooltip visibility.

The mouseover trigger might need a small wait to ensure the tooltip is properly displayed before verification.

  verifyTooltip(index){
    cy.get('[data-testid="InlineHelp-icon"]')
-   .eq(index)
-   .trigger('mouseover');
+   .eq(index)
+   .trigger('mouseover')
+   .wait(100); // Small wait for tooltip animation
    cy.get('[data-testid="InlineHelp"]')
-   .should('be.visible')
+   .should('be.visible');
  }

Alternatively, you could use .should('be.visible') with a timeout:

    cy.get('[data-testid="InlineHelp"]')
-   .should('be.visible')
+   .should('be.visible', { timeout: 1000 });
cypress/pages/CaseStudiesPage.js (2)

18-22: Fix inconsistent formatting and improve method reliability.

The method has inconsistent indentation and could be more robust.

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

49-56: Fix inconsistent formatting.

The method logic is correct but has formatting inconsistencies.

-  verifySubmitPullRequestLink(){
-    cy.contains('a','submit a pull request')
-    .should('be.visible')
-    .should('have.attr',
-    'href',
-    'https://github.com/asyncapi/website/blob/master/config/adopters.yml',
-    );
+  verifySubmitPullRequestLink() {
+    cy.contains('a', 'submit a pull request')
+      .should('be.visible')
+      .should('have.attr', 'href', 'https://github.com/asyncapi/website/blob/master/config/adopters.yml');
   }
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 002ac64 and ec79300.

📒 Files selected for processing (7)
  • cypress/RoadmapPage.cy.js (1 hunks)
  • cypress/casestudies.cy.js (1 hunks)
  • cypress/fixtures/caseStudiesLinks.json (1 hunks)
  • cypress/homepage.cy.js (1 hunks)
  • cypress/pages/CaseStudiesPage.js (1 hunks)
  • cypress/pages/homepage.js (2 hunks)
  • cypress/pages/roadmap.js (1 hunks)
🧰 Additional context used
🧠 Learnings (7)
📓 Common learnings
Learnt from: anshgoyalevil
PR: asyncapi/website#3557
File: tests/fixtures/markdown/check-edit-links-data.js:3-11
Timestamp: 2025-01-19T04:51:41.255Z
Learning: In the AsyncAPI website repository, the test data in `tests/fixtures/markdown/check-edit-links-data.js` intentionally includes inconsistent paths (with and without 'docs' prefix) to verify the script's ability to normalize and handle ambiguous path structures.
Learnt from: asyncapi-bot
PR: asyncapi/website#0
File: :0-0
Timestamp: 2025-02-18T12:07:42.211Z
Learning: The following PR commands are supported in the asyncapi/website repository:
- `/please-take-a-look` or `/ptal`: Requests attention from reviewers who haven't reviewed the PR
- `/ready-to-merge` or `/rtm`: Triggers automerge when all conditions are met
- `/do-not-merge` or `/dnm`: Blocks automerge even if all conditions are met
- `/autoupdate` or `/au`: Adds autoupdate label to keep PR in sync with target branch
- `/update` or `/u`: One-time update of PR with latest changes from target branch
cypress/homepage.cy.js (4)
Learnt from: akshatnema
PR: asyncapi/website#3423
File: tests/index.test.js:2-7
Timestamp: 2025-01-18T08:44:43.614Z
Learning: In the AsyncAPI website project, JavaScript test files must include the .ts extension when importing TypeScript files (e.g., `require('../scripts/build-rss.ts')`). This is a project-specific requirement enforced by the linting rules and build setup, even though it differs from typical Node.js behavior.
Learnt from: akshatnema
PR: asyncapi/website#3423
File: tests/index.test.js:2-7
Timestamp: 2025-01-18T08:44:43.614Z
Learning: In JavaScript test files within the AsyncAPI website project, TypeScript file imports must include the .ts extension to avoid lint errors, even though the files being imported are JavaScript files.
Learnt from: akshatnema
PR: asyncapi/website#3423
File: tests/index.test.js:2-7
Timestamp: 2025-01-18T08:44:43.614Z
Learning: In the AsyncAPI website project, JavaScript test files must include the .ts extension when importing TypeScript files (e.g., `require('../scripts/build-rss.ts')`). This is enforced by the project's configuration which uses `moduleResolution: "bundler"` in tsconfig.json and TypeScript-aware ESLint plugins. The .ts extensions are required even though the files are imported using CommonJS require statements.
Learnt from: akshatnema
PR: asyncapi/website#3101
File: tests/build-rss.test.js:25-27
Timestamp: 2024-11-01T09:55:20.531Z
Learning: In `tests/build-rss.test.js`, replacing `jest.resetModules()` with `jest.resetAllMocks()` in the `afterEach()` block causes errors. It is necessary to use `jest.resetModules()` to reset the module registry between tests in this file.
cypress/fixtures/caseStudiesLinks.json (4)
Learnt from: anshgoyalevil
PR: asyncapi/website#3557
File: tests/fixtures/markdown/check-edit-links-data.js:3-11
Timestamp: 2025-01-19T04:51:41.255Z
Learning: In the AsyncAPI website repository, the test data in `tests/fixtures/markdown/check-edit-links-data.js` intentionally includes inconsistent paths (with and without 'docs' prefix) to verify the script's ability to normalize and handle ambiguous path structures.
Learnt from: akshatnema
PR: asyncapi/website#3101
File: tests/fixtures/rssData.js:1-57
Timestamp: 2024-11-01T13:32:15.472Z
Learning: In the `tests/fixtures/rssData.js` file of the `@asyncapi/website` project, tests for edge cases such as empty strings for title or excerpt, very long text content, international characters (UTF-8), or malformed URLs in `slug` or `cover` are not necessary because these cases will not occur.
Learnt from: akshatnema
PR: asyncapi/website#3423
File: tests/index.test.js:2-7
Timestamp: 2025-01-18T08:44:43.614Z
Learning: In the AsyncAPI website project, JavaScript test files must include the .ts extension when importing TypeScript files (e.g., `require('../scripts/build-rss.ts')`). This is a project-specific requirement enforced by the linting rules and build setup, even though it differs from typical Node.js behavior.
Learnt from: akshatnema
PR: asyncapi/website#3423
File: tests/index.test.js:2-7
Timestamp: 2025-01-18T08:44:43.614Z
Learning: In the AsyncAPI website project, JavaScript test files must include the .ts extension when importing TypeScript files (e.g., `require('../scripts/build-rss.ts')`). This is enforced by the project's configuration which uses `moduleResolution: "bundler"` in tsconfig.json and TypeScript-aware ESLint plugins. The .ts extensions are required even though the files are imported using CommonJS require statements.
cypress/casestudies.cy.js (3)
Learnt from: anshgoyalevil
PR: asyncapi/website#3557
File: tests/fixtures/markdown/check-edit-links-data.js:3-11
Timestamp: 2025-01-19T04:51:41.255Z
Learning: In the AsyncAPI website repository, the test data in `tests/fixtures/markdown/check-edit-links-data.js` intentionally includes inconsistent paths (with and without 'docs' prefix) to verify the script's ability to normalize and handle ambiguous path structures.
Learnt from: akshatnema
PR: asyncapi/website#3101
File: tests/fixtures/rssData.js:1-57
Timestamp: 2024-11-01T13:32:15.472Z
Learning: In the `tests/fixtures/rssData.js` file of the `@asyncapi/website` project, tests for edge cases such as empty strings for title or excerpt, very long text content, international characters (UTF-8), or malformed URLs in `slug` or `cover` are not necessary because these cases will not occur.
Learnt from: vishvamsinh28
PR: asyncapi/website#3378
File: tests/markdown/check-markdown.test.js:133-138
Timestamp: 2024-11-29T17:36:09.783Z
Learning: When testing the 'main' function in 'check-markdown.test.js', it's acceptable to simply ensure it doesn't throw any errors, as the functions it calls are already tested elsewhere.
cypress/pages/roadmap.js (1)
Learnt from: anshgoyalevil
PR: asyncapi/website#3557
File: tests/fixtures/markdown/check-edit-links-data.js:3-11
Timestamp: 2025-01-19T04:51:41.255Z
Learning: In the AsyncAPI website repository, the test data in `tests/fixtures/markdown/check-edit-links-data.js` intentionally includes inconsistent paths (with and without 'docs' prefix) to verify the script's ability to normalize and handle ambiguous path structures.
cypress/RoadmapPage.cy.js (1)
Learnt from: vishvamsinh28
PR: asyncapi/website#3378
File: tests/markdown/check-markdown.test.js:133-138
Timestamp: 2024-11-29T17:36:09.783Z
Learning: When testing the 'main' function in 'check-markdown.test.js', it's acceptable to simply ensure it doesn't throw any errors, as the functions it calls are already tested elsewhere.
cypress/pages/CaseStudiesPage.js (1)
Learnt from: anshgoyalevil
PR: asyncapi/website#3557
File: tests/fixtures/markdown/check-edit-links-data.js:3-11
Timestamp: 2025-01-19T04:51:41.255Z
Learning: In the AsyncAPI website repository, the test data in `tests/fixtures/markdown/check-edit-links-data.js` intentionally includes inconsistent paths (with and without 'docs' prefix) to verify the script's ability to normalize and handle ambiguous path structures.
🧬 Code Graph Analysis (1)
cypress/pages/roadmap.js (1)
pages/roadmap.tsx (1)
  • RoadmapPage (485-696)
🔇 Additional comments (10)
cypress/homepage.cy.js (1)

1-1: Good consistency improvement.

The import statement update aligns with proper PascalCase naming conventions for page object classes.

cypress/pages/homepage.js (1)

1-2: LGTM: Clean import additions.

The new page object imports are correctly placed and follow proper naming conventions.

cypress/pages/roadmap.js (1)

1-13: LGTM: Well-structured page object methods.

The class structure and first three methods (visit, verifyHeader, verifyLink) follow Cypress best practices with appropriate selectors and assertions.

cypress/casestudies.cy.js (3)

6-10: LGTM! Well-structured test setup.

The beforeEach hook properly initializes the page objects and navigates to the target page before each test, following good testing practices.


39-43: LGTM! Proper fixture loading pattern.

The fixture loading is correctly implemented using the before hook, ensuring the data is available for all tests in the describe block.


45-49: Fixture data structure verified
The cypress/fixtures/caseStudiesLinks.json file contains an array of objects with both href and label keys as expected. No changes are required.

cypress/pages/CaseStudiesPage.js (4)

2-4: LGTM! Standard page object visit method.

The visit method correctly navigates to the case studies page.


6-8: LGTM! Reusable element visibility verification.

Good utility method for verifying element visibility that can be reused across different elements.


39-47: LGTM! Well-implemented FAQ link verification.

The method properly verifies both visibility and the correct href attribute for the FAQ link.


58-61: LGTM! Effective use of method composition.

Good approach to verify multiple card links by calling the reusable verifyLinkExists method.

@anshgoyalevil anshgoyalevil added the gsoc This label should be used for issues or discussions related to ideas for Google Summer of Code label Jul 11, 2025
@asyncapi-bot
Copy link
Copy Markdown
Contributor

asyncapi-bot commented Jul 18, 2025

⚡️ Lighthouse report for the changes in this PR:

Category Score
🔴 Performance 37
🟢 Accessibility 98
🟢 Best practices 92
🟢 SEO 100
🔴 PWA 33

Lighthouse ran on https://deploy-preview-4215--asyncapi-website.netlify.app/

Comment on lines +869 to +1559
@@ -1556,7 +1556,7 @@
"borderColor": "border-[#CA1A33]"
},
{
"name": "Liquid",
"name": "AsyncAPI CLI",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@anushkaaaaaaaa what is the reason behind these changes?

Copy link
Copy Markdown
Member

@princerajpoot20 princerajpoot20 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@anushkaaaaaaaa good work. left some review comments, can you please have a look

class DocsPage extends BasePage {
class DocsPage extends BaseDocsPage {
visitDocsPage() {
cy.visit('/docs');
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

consider using 'super' here

@@ -0,0 +1,82 @@
[
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we rename the folder name 'fixtures' . currently it does not look good for this file we are storing

Comment on lines +22 to +28
verifyResourceLink(href) {
cy.get(`a[href="${href}"]`)
.first()
.should('exist')
.should('have.attr', 'href', href);
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if i am not wrong, we have a generic method to verify any kind of links. can we use that

}

verifyFaqLink() {
this.verifyButtonLink(
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this verifyButtonLink are the base class methods, hence use super for clarity

}

verifySubmitPullRequestLink() {
this.verifyButtonLink(
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same goes here

}

verifyCommunityLink() {
this.verifyElementHasAttribute(
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please verify all the method calls you are using. if it is a base class method then it should be called using 'super'

Comment on lines 1 to 16
@@ -15,3 +15,4 @@

// Import commands.js using ES2015 syntax:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no need of this

@@ -15,3 +15,4 @@

// Import commands.js using ES2015 syntax:
import './commands'
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i did not get this..why we need this import commands?

Comment on lines +1 to +5
export function verifyLinks(linksArray, verifyFn, urlKey = 'url', labelKey = 'label') {
linksArray.forEach((link) => {
verifyFn(link[urlKey], link[labelKey]);
});
}
Copy link
Copy Markdown
Member

@princerajpoot20 princerajpoot20 Feb 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is just an array traversal. we are calling a method multiple times. hence, i would say we don't have to extract it as a helper function, as this is not something we are going to use again and again in our case. hence, we can avoid this complexity.

});

it('Verifies all Links under Resources work', () => {
verifyLinks(links, (href, label) => casestudiespage.verifyResourceLink(href), 'href', 'label');
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in verifyResourceLink function, we have .first() in the function. so it will get us only a single dom link, then this array traversal does not make sense as it is always going to have a single entry. or am i missing something here.

@princerajpoot20
Copy link
Copy Markdown
Member

also, e2e tests are failing. please have a look at that as well

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
cypress/pages/RoadmapPage.js (1)

20-23: ⚠️ Potential issue | 🟡 Minor

Scope tooltip visibility assertion to the hovered index.

Line 22 uses .first(), so verifyTooltip(index) can assert the wrong tooltip when index is not 0.

Suggested fix
   verifyTooltip(index) {
     cy.get('[data-testid="InlineHelp-icon"]').eq(index).trigger('mouseover');
-    cy.get('[data-testid="InlineHelp"]').first().should('be.visible');
+    cy.get('[data-testid="InlineHelp"]').eq(index).should('be.visible');
   }
#!/bin/bash
# Verify tooltip assertion target in RoadmapPage
rg -n -A3 -B1 'verifyTooltip\(index\)|InlineHelp' cypress/pages/RoadmapPage.js
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@cypress/pages/RoadmapPage.js` around lines 20 - 23, The tooltip assertion in
verifyTooltip(index) is using .first() and can check the wrong element for
non-zero indexes; update the second selector so it targets the tooltip at the
same index as the hovered icon (e.g., replace .first() with .eq(index)) in the
verifyTooltip function to ensure the hovered InlineHelp-icon and the asserted
[data-testid="InlineHelp"] use the same index.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@cypress/pages/RoadmapPage.js`:
- Around line 20-23: The tooltip assertion in verifyTooltip(index) is using
.first() and can check the wrong element for non-zero indexes; update the second
selector so it targets the tooltip at the same index as the hovered icon (e.g.,
replace .first() with .eq(index)) in the verifyTooltip function to ensure the
hovered InlineHelp-icon and the asserted [data-testid="InlineHelp"] use the same
index.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between abf49e7 and 82be14f.

📒 Files selected for processing (22)
  • cypress.config.js
  • cypress/casestudies.cy.js
  • cypress/data/caseStudiesLinks.json
  • cypress/data/docsSections.json
  • cypress/data/example.json
  • cypress/data/footerPageData.json
  • cypress/data/homePageData.json
  • cypress/data/toolsData.json
  • cypress/data/toolsPages.json
  • cypress/docspage.cy.js
  • cypress/homepage.cy.js
  • cypress/pages/CaseStudiesPage.js
  • cypress/pages/DocsPage.js
  • cypress/pages/RoadmapPage.js
  • cypress/pages/toolsGenerator.js
  • cypress/pages/toolsModelina.js
  • cypress/support/e2e.js
  • cypress/tools_cli.cy.js
  • cypress/tools_generator.cy.js
  • cypress/tools_github_actions.cy.js
  • cypress/tools_modelina.cy.js
  • cypress/tools_parsers.cy.js
💤 Files with no reviewable changes (1)
  • cypress/support/e2e.js
✅ Files skipped from review due to trivial changes (1)
  • cypress/data/caseStudiesLinks.json
🚧 Files skipped from review as they are similar to previous changes (2)
  • cypress/casestudies.cy.js
  • cypress/pages/CaseStudiesPage.js

@anushkaaaaaaaa
Copy link
Copy Markdown
Contributor Author

@princerajpoot20 i have made the required changes and also fixed the e2e tests please review once, thankyou

anshgoyalevil
anshgoyalevil previously approved these changes Mar 19, 2026
Copy link
Copy Markdown
Member

@anshgoyalevil anshgoyalevil left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving this PR. Please handle any required changes (if any) in follow up PRs.

@princerajpoot20
Copy link
Copy Markdown
Member

@anushkaaaaaaaa can you please resolve the merge conflicts

@anushkaaaaaaaa
Copy link
Copy Markdown
Contributor Author

@princerajpoot20 done, please review

@animeshk923
Copy link
Copy Markdown
Contributor

animeshk923 commented Mar 23, 2026

@anushkaaaaaaaa I can only see a very minor changes here: https://github.com/asyncapi/website/pull/4215/changes

Please have a look again. I don't have much context of this PR but it seems that a major chunk of the code was removed when you force-pushed this branch/PR.
image

If you have the local changes on your machine, you can re-add them via a new commit.

@princerajpoot20
Copy link
Copy Markdown
Member

@anushkaaaaaaaa please have a look at the PR. It is currently a blank PR (no line changes).

Thanks @animeshk923 for your help with the review.

@sonarqubecloud
Copy link
Copy Markdown

@animeshk923
Copy link
Copy Markdown
Contributor

@anushkaaaaaaaa please have a look at the PR. It is currently a blank PR (no line changes).

Thanks @animeshk923 for your help with the review.

Happy to help! :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gsoc This label should be used for issues or discussions related to ideas for Google Summer of Code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants