diff --git a/ui/app/components/footer.tsx b/ui/app/components/footer.tsx
index e773472..0800eaf 100644
--- a/ui/app/components/footer.tsx
+++ b/ui/app/components/footer.tsx
@@ -7,6 +7,7 @@ const FooterComponent = () => {
DATASET USED
@@ -23,6 +24,7 @@ const FooterComponent = () => {
README
@@ -31,6 +33,7 @@ const FooterComponent = () => {
FAQ
diff --git a/ui/app/components/header.tsx b/ui/app/components/header.tsx
index 677ae67..ab648d1 100644
--- a/ui/app/components/header.tsx
+++ b/ui/app/components/header.tsx
@@ -47,12 +47,14 @@ export function Header() {
Sign up
Start Free
diff --git a/ui/tests/config/testData.ts b/ui/tests/config/testData.ts
new file mode 100644
index 0000000..41febe4
--- /dev/null
+++ b/ui/tests/config/testData.ts
@@ -0,0 +1,9 @@
+import urls from '../config/urls.json';
+
+export const navitems: { navItem: string; expectedRes: string }[] = [
+ { navItem: "Home", expectedRes: urls.falkorDBUrl },
+ { navItem: "Github", expectedRes: urls.benchmarkGithubUrl },
+ { navItem: "Discord", expectedRes: urls.falkordbDiscordUrl },
+ { navItem: "Sign up", expectedRes: urls.signUpUrl },
+ { navItem: "Start Free", expectedRes: urls.startFreeUrl },
+ ];
\ No newline at end of file
diff --git a/ui/tests/logic/POM/mainPage.ts b/ui/tests/logic/POM/mainPage.ts
index 6cb571b..9660f8a 100644
--- a/ui/tests/logic/POM/mainPage.ts
+++ b/ui/tests/logic/POM/mainPage.ts
@@ -4,14 +4,26 @@ import BasePage from "../../infra/ui/basePage";
export default class NavBarComponent extends BasePage {
+ /* Header Locators */
+
private get falkorDBLogo(): Locator {
return this.page.locator("//header//img[@alt='FalkorDB']")
}
+ private get navBarSocialLink(): (navItem: string) => Locator {
+ return (navItem: string) => this.page.locator(`//a[@title="${navItem}"]`);
+ }
+
+ private get navBarLink(): (navItem: string) => Locator {
+ return (navItem: string) => this.page.locator(`//a[contains(text(), '${navItem}')]`);
+ }
+
async clickOnFalkorLogo(): Promise {
await this.falkorDBLogo.click();
}
+ /* Header Functionality */
+
async clickOnFalkor(): Promise {
await this.page.waitForLoadState('networkidle');
const [newPage] = await Promise.all([
@@ -20,4 +32,22 @@ export default class NavBarComponent extends BasePage {
]);
return newPage
}
+
+ async getNavBarSocialLink(navItem : string): Promise {
+ await this.page.waitForLoadState('networkidle');
+ const [newPage] = await Promise.all([
+ this.page.waitForEvent('popup'),
+ this.navBarSocialLink(navItem).click(),
+ ]);
+ return newPage
+ }
+
+ async getNavBarLink(navItem : string): Promise {
+ await this.page.waitForLoadState('networkidle');
+ const [newPage] = await Promise.all([
+ this.page.waitForEvent('popup'),
+ this.navBarLink(navItem).click(),
+ ]);
+ return newPage
+ }
}
\ No newline at end of file
diff --git a/ui/tests/tests/header.spec.ts b/ui/tests/tests/header.spec.ts
index f94b731..eab773a 100644
--- a/ui/tests/tests/header.spec.ts
+++ b/ui/tests/tests/header.spec.ts
@@ -2,6 +2,7 @@ import { test, expect } from '@playwright/test';
import BrowserWrapper from '../infra/ui/browserWrapper';
import MainPage from '../logic/POM/mainPage';
import urls from '../config/urls.json';
+import { navitems } from '../config/testData';
test.describe(' Navbar tests', () => {
let browser: BrowserWrapper;
@@ -19,4 +20,20 @@ test.describe(' Navbar tests', () => {
const page = await header.clickOnFalkor();
expect(page.url()).toBe(urls.falkorDBUrl)
})
+
+ navitems.slice(0,3).forEach(({navItem, expectedRes}) => {
+ test(`Verify clicking on ${navItem} redirects to specified ${navItem}`, async () => {
+ const header = await browser.createNewPage(MainPage, urls.baseUrl)
+ const page = await header.getNavBarSocialLink(navItem);
+ expect(page.url()).toBe(expectedRes)
+ })
+ })
+
+ navitems.slice(3,5).forEach(({navItem, expectedRes}) => {
+ test(`Verify clicking on ${navItem} redirects to specified ${navItem}`, async () => {
+ const header = await browser.createNewPage(MainPage, urls.baseUrl)
+ const page = await header.getNavBarLink(navItem);
+ expect(page.url()).toBe(expectedRes)
+ })
+ })
});
\ No newline at end of file