From 6bd779605e74f9fbd018484a233ba5f5eab5f73f Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Wed, 16 Sep 2026 21:47:54 +0800
Subject: [PATCH 01/54] feat(experience): add view all link to Experience
section
---
src/components/sections/experience.tsx | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/components/sections/experience.tsx b/src/components/sections/experience.tsx
index 8d585e1..3401895 100644
--- a/src/components/sections/experience.tsx
+++ b/src/components/sections/experience.tsx
@@ -1,12 +1,16 @@
import { FiExternalLink } from 'react-icons/fi';
import { workExperiences, certificates } from '@/data/experiences';
+import ViewAllLink from '../ui/view-all-link';
import Link from 'next/link';
const Experience = () => {
return (
- Experience
+
{workExperiences.map(
From 9f139930e7121146af5b87e9edf03d5c5ff78871 Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Wed, 16 Sep 2026 22:19:50 +0800
Subject: [PATCH 02/54] feat(certificates): add view all link to Certificate
section
---
src/components/sections/experience.tsx | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/components/sections/experience.tsx b/src/components/sections/experience.tsx
index 3401895..e4d4efb 100644
--- a/src/components/sections/experience.tsx
+++ b/src/components/sections/experience.tsx
@@ -31,7 +31,10 @@ const Experience = () => {
- Certificates
+
{certificates.map(
From 4aea103f6175f73b80d52f16d43a0839377aaea3 Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Wed, 16 Sep 2026 22:34:11 +0800
Subject: [PATCH 03/54] feat(experience): create initial experience page
content
---
src/app/experience/page.tsx | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
create mode 100644 src/app/experience/page.tsx
diff --git a/src/app/experience/page.tsx b/src/app/experience/page.tsx
new file mode 100644
index 0000000..c7a23b8
--- /dev/null
+++ b/src/app/experience/page.tsx
@@ -0,0 +1,25 @@
+import Breadcrumb from '@/components/sections/breadcrumb';
+import ThemeToggle from '@/components/theme/theme-toggle';
+
+export default function ExperiencePage() {
+ return (
+
+
+
+
+ Experience
+
+ My professional experience as a software engineer.
+
+
+
+ Add list here.
+
+ );
+}
From d6e3b9588be92d530261017fd8ac1f426c2db46c Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Wed, 16 Sep 2026 22:36:57 +0800
Subject: [PATCH 04/54] feat(certificates): create initial certificates page
content
---
src/app/certificates/page.tsx | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
create mode 100644 src/app/certificates/page.tsx
diff --git a/src/app/certificates/page.tsx b/src/app/certificates/page.tsx
new file mode 100644
index 0000000..a66528c
--- /dev/null
+++ b/src/app/certificates/page.tsx
@@ -0,0 +1,25 @@
+import Breadcrumb from '@/components/sections/breadcrumb';
+import ThemeToggle from '@/components/theme/theme-toggle';
+
+export default function ExperiencePage() {
+ return (
+
+
+
+
+ Certificates
+
+ List of all my professional certifications to date.
+
+
+
+ Add list here.
+
+ );
+}
From 25deb5482dfbdbfbf9f94ff7a78912985e87ee5c Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Thu, 17 Sep 2026 23:30:54 +0800
Subject: [PATCH 05/54] feat(experience): import work experiences to experience
page and show initial content
---
src/app/experience/page.tsx | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/app/experience/page.tsx b/src/app/experience/page.tsx
index c7a23b8..2d2382e 100644
--- a/src/app/experience/page.tsx
+++ b/src/app/experience/page.tsx
@@ -1,5 +1,6 @@
import Breadcrumb from '@/components/sections/breadcrumb';
import ThemeToggle from '@/components/theme/theme-toggle';
+import { workExperiences } from '@/data/experiences';
export default function ExperiencePage() {
return (
@@ -19,7 +20,22 @@ export default function ExperiencePage() {
- Add list here.
+
);
}
From 9a65d6a3648d29f44e5068079d0dff6ec7c33f2d Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Fri, 18 Sep 2026 20:14:19 +0800
Subject: [PATCH 06/54] fix(ui): normalize flex spacing in experience section
of the homepage
---
src/components/sections/experience.tsx | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/components/sections/experience.tsx b/src/components/sections/experience.tsx
index e4d4efb..3a5c00a 100644
--- a/src/components/sections/experience.tsx
+++ b/src/components/sections/experience.tsx
@@ -5,8 +5,8 @@ import Link from 'next/link';
const Experience = () => {
return (
-
-
+
+
Experience
@@ -30,7 +30,7 @@ const Experience = () => {
-
+
Certificates
From 8cd470b095f06849048f7ff38f33140bae9386ca Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Fri, 18 Sep 2026 20:17:42 +0800
Subject: [PATCH 07/54] refactor(experiences): rearrange data and create a
WORK_EXPERIENCES variable to contain all my work experiences
---
src/data/experiences.ts | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/data/experiences.ts b/src/data/experiences.ts
index d30c58a..9b34cb8 100644
--- a/src/data/experiences.ts
+++ b/src/data/experiences.ts
@@ -1,14 +1,6 @@
import { WorkExperience, Certificate } from '@/types/experience';
-export const workExperiences: WorkExperience[] = [
- {
- id: 2,
- startDate: 'June 2026',
- endDate: 'Present',
- position: 'Full Stack Developer',
- companyName: 'CALEC',
- location: 'New York, USA (Remote)',
- },
+export const WORK_EXPERIENCES: WorkExperience[] = [
{
id: 1,
startDate: 'March 2025',
@@ -17,8 +9,19 @@ export const workExperiences: WorkExperience[] = [
companyName: 'Freelance',
location: 'Philippines',
},
+ {
+ id: 2,
+ startDate: 'June 2026',
+ endDate: 'Present',
+ position: 'Full Stack Developer',
+ companyName: 'CALEC',
+ location: 'New York, USA (Remote)',
+ },
];
+export const workExperiences: WorkExperience[] =
+ WORK_EXPERIENCES.slice(-2).reverse();
+
export const CERTIFICATES: Certificate[] = [
{
id: 1,
From b96f8bf24d3e9e6c03d9b56c1dfdaa5d4de2eca5 Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Fri, 18 Sep 2026 20:24:53 +0800
Subject: [PATCH 08/54] feat(experience): add responsibilities array string
property to WorkExperience type
---
src/data/experiences.ts | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/data/experiences.ts b/src/data/experiences.ts
index 9b34cb8..573b456 100644
--- a/src/data/experiences.ts
+++ b/src/data/experiences.ts
@@ -8,6 +8,12 @@ export const WORK_EXPERIENCES: WorkExperience[] = [
position: 'Full Stack Developer',
companyName: 'Freelance',
location: 'Philippines',
+ responsibilities: [
+ 'Managed and reviewed pull requests, approving and merging changes into main and staging branches.',
+ 'Resolved application issues in Laravel and Livewire by tracing generated markup and debugging.',
+ 'Improved WCAG accessibility across the Ri2L web application by auditing pages with Axe DevTools.',
+ 'Established a Laravel development environment with WSL2, Docker, PHP, Composer, Node.js, and Ubuntu.',
+ ],
},
{
id: 2,
@@ -16,6 +22,12 @@ export const WORK_EXPERIENCES: WorkExperience[] = [
position: 'Full Stack Developer',
companyName: 'CALEC',
location: 'New York, USA (Remote)',
+ responsibilities: [
+ 'Developed modern Next.js and React applications using JavaScript, TypeScript, and Tailwind CSS.',
+ 'Implemented client-side routing, state management, and API integration in React-based projects.',
+ 'Built testing workflows using Vitest, Playwright, React Testing Library, and Mock Service Worker (MSW).',
+ 'Collaborated on open-source projects using Git, GitHub, pull requests, and code review workflows.',
+ ],
},
];
From 1765e46a6ecea9b2407c239b8afa6ec2bb6b086f Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Fri, 18 Sep 2026 20:25:48 +0800
Subject: [PATCH 09/54] chore(type): update WorkExperience type and add
responbilities property
---
src/types/experience.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/types/experience.ts b/src/types/experience.ts
index aea23ce..f51691c 100644
--- a/src/types/experience.ts
+++ b/src/types/experience.ts
@@ -5,6 +5,7 @@ export type WorkExperience = {
position: string;
companyName: string;
location: string;
+ responsibilities: string[];
};
export type Certificate = {
From d9cf41c5349d9c13b8d9aab9a2d1f69f48c6ae96 Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Fri, 18 Sep 2026 20:26:37 +0800
Subject: [PATCH 10/54] feat(experience): replace workExperiences with
WORK_EXPERIENCES data for the experience page and initially show the
responsibilities list
---
src/app/experience/page.tsx | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/src/app/experience/page.tsx b/src/app/experience/page.tsx
index 2d2382e..16e22cc 100644
--- a/src/app/experience/page.tsx
+++ b/src/app/experience/page.tsx
@@ -1,6 +1,6 @@
import Breadcrumb from '@/components/sections/breadcrumb';
import ThemeToggle from '@/components/theme/theme-toggle';
-import { workExperiences } from '@/data/experiences';
+import { WORK_EXPERIENCES } from '@/data/experiences';
export default function ExperiencePage() {
return (
@@ -21,8 +21,16 @@ export default function ExperiencePage() {
- {workExperiences.map(
- ({ id, startDate, endDate, position, companyName, location }) => {
+ {WORK_EXPERIENCES.map(
+ ({
+ id,
+ startDate,
+ endDate,
+ position,
+ companyName,
+ location,
+ responsibilities,
+ }) => {
return (
{position}
{`${companyName} · ${location}`}
{`${startDate} - ${endDate}`}
+
+
+ {responsibilities.map((responsibility) => {
+ return {responsibility} ;
+ })}
+
);
},
From 27079feac15199d3bc478c5ac633a59f38c26974 Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Fri, 18 Sep 2026 22:21:16 +0800
Subject: [PATCH 11/54] chore(type): add companyUrl property for WorkExperience
type
---
src/types/experience.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/types/experience.ts b/src/types/experience.ts
index f51691c..fff62ab 100644
--- a/src/types/experience.ts
+++ b/src/types/experience.ts
@@ -4,6 +4,7 @@ export type WorkExperience = {
endDate: string;
position: string;
companyName: string;
+ companyUrl: string;
location: string;
responsibilities: string[];
};
From 870ce2492d77049a47427e456bf6b6e290d3714f Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Fri, 18 Sep 2026 22:22:01 +0800
Subject: [PATCH 12/54] feat(experience): add companyUrl to each item in
WORK_EXPERIENCES
---
src/data/experiences.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/data/experiences.ts b/src/data/experiences.ts
index 573b456..6e98a72 100644
--- a/src/data/experiences.ts
+++ b/src/data/experiences.ts
@@ -7,6 +7,7 @@ export const WORK_EXPERIENCES: WorkExperience[] = [
endDate: 'June 2026',
position: 'Full Stack Developer',
companyName: 'Freelance',
+ companyUrl: 'https://github.com/CodingWithJiro',
location: 'Philippines',
responsibilities: [
'Managed and reviewed pull requests, approving and merging changes into main and staging branches.',
@@ -21,6 +22,7 @@ export const WORK_EXPERIENCES: WorkExperience[] = [
endDate: 'Present',
position: 'Full Stack Developer',
companyName: 'CALEC',
+ companyUrl: 'https://calec.org/',
location: 'New York, USA (Remote)',
responsibilities: [
'Developed modern Next.js and React applications using JavaScript, TypeScript, and Tailwind CSS.',
From 0f969c6b4dfbd9a5d5d285a38bc947f9de8b9b9c Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Fri, 18 Sep 2026 22:50:43 +0800
Subject: [PATCH 13/54] feat(experience): implement card based experience UI
---
src/app/experience/page.tsx | 65 +++++++++++++++++++++----------------
1 file changed, 37 insertions(+), 28 deletions(-)
diff --git a/src/app/experience/page.tsx b/src/app/experience/page.tsx
index 16e22cc..49759c9 100644
--- a/src/app/experience/page.tsx
+++ b/src/app/experience/page.tsx
@@ -20,35 +20,44 @@ export default function ExperiencePage() {
-
);
From db1a3812c389762b1cd4349fef916f73ba876e6b Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Sat, 19 Sep 2026 02:55:27 +0800
Subject: [PATCH 14/54] feat(experience): style mobile view for experience page
---
src/app/experience/page.tsx | 29 +++++++++++++++++++++++------
1 file changed, 23 insertions(+), 6 deletions(-)
diff --git a/src/app/experience/page.tsx b/src/app/experience/page.tsx
index 49759c9..3e7d28f 100644
--- a/src/app/experience/page.tsx
+++ b/src/app/experience/page.tsx
@@ -1,6 +1,8 @@
import Breadcrumb from '@/components/sections/breadcrumb';
import ThemeToggle from '@/components/theme/theme-toggle';
import { WORK_EXPERIENCES } from '@/data/experiences';
+import Link from 'next/link';
+import { FiExternalLink } from 'react-icons/fi';
export default function ExperiencePage() {
return (
@@ -20,7 +22,7 @@ export default function ExperiencePage() {
-
+
{WORK_EXPERIENCES.slice()
.reverse()
.map(
@@ -31,6 +33,7 @@ export default function ExperiencePage() {
endDate,
position,
companyName,
+ companyUrl,
location,
responsibilities,
},
@@ -44,13 +47,27 @@ export default function ExperiencePage() {
/>
- {position}
- {`${companyName} · ${location}`}
- {`${startDate} - ${endDate}`}
+ {position}
+
+
+
{companyName}
+
+
+
·
+
{location}
+
+ {`${startDate} - ${endDate}`}
-
+
{responsibilities.map((responsibility) => {
- return {responsibility} ;
+ return (
+
+ {responsibility}
+
+ );
})}
From 8a811bb33f2c8a2fed42a2e3e35e3d2a719aee88 Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Sun, 20 Sep 2026 02:08:37 +0800
Subject: [PATCH 15/54] feat(experience): adjust sizes for medium size viewport
---
src/app/experience/page.tsx | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/src/app/experience/page.tsx b/src/app/experience/page.tsx
index 3e7d28f..29dcdf0 100644
--- a/src/app/experience/page.tsx
+++ b/src/app/experience/page.tsx
@@ -47,21 +47,26 @@ export default function ExperiencePage() {
/>
- {position}
-
+
+ {position}
+
+
-
{companyName}
-
+
{companyName}
+
·
-
{location}
+
+ {location}
+
-
{`${startDate} - ${endDate}`}
+
{`${startDate} - ${endDate}`}
-
+
{responsibilities.map((responsibility) => {
return (
From 50eacae30fc8a212dc62c96d199096babc9881c5 Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Sun, 20 Sep 2026 02:22:01 +0800
Subject: [PATCH 16/54] fix(experience): switch responsibility data to correct
details
---
src/data/experiences.ts | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/data/experiences.ts b/src/data/experiences.ts
index 6e98a72..f052264 100644
--- a/src/data/experiences.ts
+++ b/src/data/experiences.ts
@@ -10,10 +10,10 @@ export const WORK_EXPERIENCES: WorkExperience[] = [
companyUrl: 'https://github.com/CodingWithJiro',
location: 'Philippines',
responsibilities: [
- 'Managed and reviewed pull requests, approving and merging changes into main and staging branches.',
- 'Resolved application issues in Laravel and Livewire by tracing generated markup and debugging.',
- 'Improved WCAG accessibility across the Ri2L web application by auditing pages with Axe DevTools.',
- 'Established a Laravel development environment with WSL2, Docker, PHP, Composer, Node.js, and Ubuntu.',
+ 'Developed modern Next.js and React applications using JavaScript, TypeScript, and Tailwind CSS.',
+ 'Implemented client-side routing, state management, and API integration in React-based projects.',
+ 'Built testing workflows using Vitest, Playwright, React Testing Library, and Mock Service Worker (MSW).',
+ 'Collaborated on open-source projects using Git, GitHub, pull requests, and code review workflows.',
],
},
{
@@ -25,10 +25,10 @@ export const WORK_EXPERIENCES: WorkExperience[] = [
companyUrl: 'https://calec.org/',
location: 'New York, USA (Remote)',
responsibilities: [
- 'Developed modern Next.js and React applications using JavaScript, TypeScript, and Tailwind CSS.',
- 'Implemented client-side routing, state management, and API integration in React-based projects.',
- 'Built testing workflows using Vitest, Playwright, React Testing Library, and Mock Service Worker (MSW).',
- 'Collaborated on open-source projects using Git, GitHub, pull requests, and code review workflows.',
+ 'Managed and reviewed pull requests, approving and merging changes into main and staging branches.',
+ 'Resolved application issues in Laravel and Livewire by tracing generated markup and debugging.',
+ 'Improved WCAG accessibility across the Ri2L web application by auditing pages with Axe DevTools.',
+ 'Established a Laravel development environment with WSL2, Docker, PHP, Composer, Node.js, and Ubuntu.',
],
},
];
From 3221ba9267d1200ae39f4c6951a6268d3e03203f Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Sun, 20 Sep 2026 02:22:46 +0800
Subject: [PATCH 17/54] feat(a11y): add aria label and focus visible outline
for company links
---
src/app/experience/page.tsx | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/app/experience/page.tsx b/src/app/experience/page.tsx
index 29dcdf0..ee77f49 100644
--- a/src/app/experience/page.tsx
+++ b/src/app/experience/page.tsx
@@ -50,14 +50,15 @@ export default function ExperiencePage() {
{position}
-
+
-
{companyName}
-
+
{companyName}
+
·
From 518fd7b5ad928a5023c265810717cc40d6624a3a Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Sun, 20 Sep 2026 11:34:42 +0800
Subject: [PATCH 18/54] test(e2e): visitor can see the experience section
---
tests/experience.spec.ts | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 tests/experience.spec.ts
diff --git a/tests/experience.spec.ts b/tests/experience.spec.ts
new file mode 100644
index 0000000..d2b808a
--- /dev/null
+++ b/tests/experience.spec.ts
@@ -0,0 +1,9 @@
+import { test, expect } from '@playwright/test';
+
+test.describe('Experience', () => {
+ test('visitor can see the experience section', async ({ page }) => {
+ await page.goto('/');
+ const heading = page.getByRole('heading', { name: /^experience$/i });
+ await expect(heading).toBeVisible();
+ });
+});
From c80b0372aa2c68d3eec016576d373a036e76314a Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Sun, 20 Sep 2026 11:44:46 +0800
Subject: [PATCH 19/54] test(e2e): visitor can view the Experience page
---
tests/experience.spec.ts | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/tests/experience.spec.ts b/tests/experience.spec.ts
index d2b808a..4a52f7c 100644
--- a/tests/experience.spec.ts
+++ b/tests/experience.spec.ts
@@ -1,9 +1,15 @@
import { test, expect } from '@playwright/test';
test.describe('Experience', () => {
- test('visitor can see the experience section', async ({ page }) => {
+ test('visitor can see the Experience section', async ({ page }) => {
await page.goto('/');
const heading = page.getByRole('heading', { name: /^experience$/i });
await expect(heading).toBeVisible();
});
+ test('visitor can view the Experience page', async ({ page }) => {
+ await page.goto('/');
+ const viewAllLink = page.locator('a[href="/experience"]');
+ await viewAllLink.click();
+ await expect(page).toHaveURL('/experience');
+ });
});
From 372fa4aa87de96f41a684873b9646c9a34280afa Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Sun, 20 Sep 2026 11:54:52 +0800
Subject: [PATCH 20/54] test(e2e): visitor can see the Experience page contents
---
tests/experience.spec.ts | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/tests/experience.spec.ts b/tests/experience.spec.ts
index 4a52f7c..cf6c5e5 100644
--- a/tests/experience.spec.ts
+++ b/tests/experience.spec.ts
@@ -1,3 +1,4 @@
+import { WORK_EXPERIENCES } from '@/data/experiences';
import { test, expect } from '@playwright/test';
test.describe('Experience', () => {
@@ -12,4 +13,15 @@ test.describe('Experience', () => {
await viewAllLink.click();
await expect(page).toHaveURL('/experience');
});
+ test.only('visitor can see the Experience page contents', async ({
+ page,
+ }) => {
+ await page.goto('/experience');
+ const heading = page.getByRole('heading', { name: /^experience$/i });
+ await expect(heading).toBeVisible();
+ const description = page.getByText(
+ /^my professional experience as a software engineer.$/i,
+ );
+ await expect(description).toBeVisible();
+ });
});
From 2e780c885875eecc1f70713db2ad3c2468c65ea2 Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Sun, 20 Sep 2026 12:08:23 +0800
Subject: [PATCH 21/54] test(e2e): visitor can see the latest work experience
in Experience page
---
tests/experience.spec.ts | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/tests/experience.spec.ts b/tests/experience.spec.ts
index cf6c5e5..889be76 100644
--- a/tests/experience.spec.ts
+++ b/tests/experience.spec.ts
@@ -1,4 +1,5 @@
import { WORK_EXPERIENCES } from '@/data/experiences';
+import { WorkExperience } from '@/types/experience';
import { test, expect } from '@playwright/test';
test.describe('Experience', () => {
@@ -13,9 +14,7 @@ test.describe('Experience', () => {
await viewAllLink.click();
await expect(page).toHaveURL('/experience');
});
- test.only('visitor can see the Experience page contents', async ({
- page,
- }) => {
+ test('visitor can see the Experience page contents', async ({ page }) => {
await page.goto('/experience');
const heading = page.getByRole('heading', { name: /^experience$/i });
await expect(heading).toBeVisible();
@@ -24,4 +23,21 @@ test.describe('Experience', () => {
);
await expect(description).toBeVisible();
});
+ test('visitor can see the latest work experience in Experience page', async ({
+ page,
+ }) => {
+ await page.goto('/experience');
+ const latestWorkExperience: WorkExperience = WORK_EXPERIENCES.at(-1)!;
+ const { position, companyName, companyUrl, location } =
+ latestWorkExperience;
+ const heading = page.getByRole('heading', { name: position }).first();
+ await expect(heading).toBeVisible();
+ const companyLink = page.getByRole('link', {
+ name: `Open ${companyName}'s official website to new tab.`,
+ });
+ await expect(companyLink).toBeVisible();
+ await expect(companyLink).toHaveAttribute('href', companyUrl);
+ const companyLocation = page.getByText(location);
+ await expect(companyLocation).toBeVisible();
+ });
});
From a643c33a0caec00d423797d3d836fd816e21f31d Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Sun, 20 Sep 2026 12:14:49 +0800
Subject: [PATCH 22/54] test(e2e): visitor can view a company website in new
tab
---
tests/experience.spec.ts | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/tests/experience.spec.ts b/tests/experience.spec.ts
index 889be76..285b8d5 100644
--- a/tests/experience.spec.ts
+++ b/tests/experience.spec.ts
@@ -40,4 +40,16 @@ test.describe('Experience', () => {
const companyLocation = page.getByText(location);
await expect(companyLocation).toBeVisible();
});
+ test('visitor can view a company website in new tab', async ({ page }) => {
+ await page.goto('/experience');
+ const latestWorkExperience: WorkExperience = WORK_EXPERIENCES.at(-1)!;
+ const { companyUrl, companyName } = latestWorkExperience;
+ const companyLink = page.getByRole('link', {
+ name: `Open ${companyName}'s official website to new tab.`,
+ });
+ const newPagePromise = page.waitForEvent('popup');
+ await companyLink.click();
+ const newPage = await newPagePromise;
+ await expect(newPage).toHaveURL(companyUrl);
+ });
});
From d5794e654f74cc9aa430aaa84eb83a057642780b Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Sun, 20 Sep 2026 12:23:10 +0800
Subject: [PATCH 23/54] test(e2e): visitor can tab to the Experience view all
link and open the Experience page
---
tests/keyboard.spec.ts | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/tests/keyboard.spec.ts b/tests/keyboard.spec.ts
index 7ce088d..5497b38 100644
--- a/tests/keyboard.spec.ts
+++ b/tests/keyboard.spec.ts
@@ -155,4 +155,18 @@ test.describe('Keyboard Accessibility', () => {
await page.keyboard.press('Enter');
await expect(page).toHaveURL('/blog');
});
+ test('visitor can tab to the Experience view all link and open the Experience page', async ({
+ page,
+ browserName,
+ }) => {
+ test.skip(
+ browserName === 'webkit',
+ 'WebKit on Windows does not traverse focus order correctly.',
+ );
+ const viewAllLink = page.locator('a[href="/experience"]');
+ await tabUntilFocused(page, viewAllLink, 'View all link');
+ await expect(viewAllLink).toBeFocused();
+ await page.keyboard.press('Enter');
+ await expect(page).toHaveURL('/experience');
+ });
});
From ab5b5a517aa1ee16341f0f6a2d7e1bbb7aab3c58 Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Sun, 20 Sep 2026 12:27:10 +0800
Subject: [PATCH 24/54] test(e2e): visitor can tab to the Certificates view all
link and open the Certificates page
---
tests/keyboard.spec.ts | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/tests/keyboard.spec.ts b/tests/keyboard.spec.ts
index 5497b38..23152e4 100644
--- a/tests/keyboard.spec.ts
+++ b/tests/keyboard.spec.ts
@@ -169,4 +169,18 @@ test.describe('Keyboard Accessibility', () => {
await page.keyboard.press('Enter');
await expect(page).toHaveURL('/experience');
});
+ test('visitor can tab to the Certificates view all link and open the Certificates page', async ({
+ page,
+ browserName,
+ }) => {
+ test.skip(
+ browserName === 'webkit',
+ 'WebKit on Windows does not traverse focus order correctly.',
+ );
+ const viewAllLink = page.locator('a[href="/certificates"]');
+ await tabUntilFocused(page, viewAllLink, 'View all link');
+ await expect(viewAllLink).toBeFocused();
+ await page.keyboard.press('Enter');
+ await expect(page).toHaveURL('/certificates');
+ });
});
From b7e8fd8bab56e842b34e3e08f00f78b48be987ae Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Sun, 20 Sep 2026 12:31:59 +0800
Subject: [PATCH 25/54] test(e2e): visitor can focus on the company website
link with keyboard
---
tests/experience.spec.ts | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/tests/experience.spec.ts b/tests/experience.spec.ts
index 285b8d5..0ecde5d 100644
--- a/tests/experience.spec.ts
+++ b/tests/experience.spec.ts
@@ -52,4 +52,17 @@ test.describe('Experience', () => {
const newPage = await newPagePromise;
await expect(newPage).toHaveURL(companyUrl);
});
+ test('visitor can focus the company website link with keyboard', async ({
+ page,
+ }) => {
+ await page.goto('/experience');
+ const latestWorkExperience: WorkExperience = WORK_EXPERIENCES.at(-1)!;
+ const { companyUrl, companyName } = latestWorkExperience;
+ const companyLink = page.getByRole('link', {
+ name: `Open ${companyName}'s official website to new tab.`,
+ });
+ await expect(companyLink).toHaveAttribute('href', companyUrl);
+ await companyLink.focus();
+ await expect(companyLink).toBeFocused();
+ });
});
From 6dac1b1a6b48020627d3b8e349a5a1742bdc8567 Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Mon, 21 Sep 2026 23:19:57 +0800
Subject: [PATCH 26/54] feat(certificates): show initial certificates UI
---
src/app/certificates/page.tsx | 32 +++++++++++++++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)
diff --git a/src/app/certificates/page.tsx b/src/app/certificates/page.tsx
index a66528c..f71edf2 100644
--- a/src/app/certificates/page.tsx
+++ b/src/app/certificates/page.tsx
@@ -1,5 +1,8 @@
import Breadcrumb from '@/components/sections/breadcrumb';
import ThemeToggle from '@/components/theme/theme-toggle';
+import { CERTIFICATES } from '@/data/experiences';
+import { FiExternalLink } from 'react-icons/fi';
+import Link from 'next/link';
export default function ExperiencePage() {
return (
@@ -19,7 +22,34 @@ export default function ExperiencePage() {
- Add list here.
+
);
}
From cc7bab36cdd3719a760655692e004c2620aa1f52 Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Wed, 23 Sep 2026 23:23:53 +0800
Subject: [PATCH 27/54] feat(certificates): remove before and after pseudo
elements for each list
---
src/app/certificates/page.tsx | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/src/app/certificates/page.tsx b/src/app/certificates/page.tsx
index f71edf2..c8f4fd3 100644
--- a/src/app/certificates/page.tsx
+++ b/src/app/certificates/page.tsx
@@ -26,10 +26,7 @@ export default function ExperiencePage() {
{CERTIFICATES.map(
({ id, title, institution, dateReceived, urlLink }) => {
return (
-
+
Date: Thu, 24 Sep 2026 02:13:47 +0800
Subject: [PATCH 28/54] feat(certificate): add imgUrl property in Certificate
type
---
src/types/experience.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/types/experience.ts b/src/types/experience.ts
index fff62ab..7e73b32 100644
--- a/src/types/experience.ts
+++ b/src/types/experience.ts
@@ -15,4 +15,5 @@ export type Certificate = {
institution: string;
dateReceived: string;
urlLink: string;
+ imgUrl: string;
};
From 78a473c3c7103cd22ffd1e58d5db3edbd27f8185 Mon Sep 17 00:00:00 2001
From: Elmar Chavez
Date: Thu, 24 Sep 2026 02:18:52 +0800
Subject: [PATCH 29/54] chore(certificates): add certificate webp images to
public
---
...tend-developement-libraries-certificate.webp | Bin 0 -> 61108 bytes
public/certificates/javascript-certificate.webp | Bin 0 -> 54296 bytes
.../relational-database-certificate.webp | Bin 0 -> 55654 bytes
.../responsive-web-design-certificate.webp | Bin 0 -> 57902 bytes
4 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 public/certificates/frontend-developement-libraries-certificate.webp
create mode 100644 public/certificates/javascript-certificate.webp
create mode 100644 public/certificates/relational-database-certificate.webp
create mode 100644 public/certificates/responsive-web-design-certificate.webp
diff --git a/public/certificates/frontend-developement-libraries-certificate.webp b/public/certificates/frontend-developement-libraries-certificate.webp
new file mode 100644
index 0000000000000000000000000000000000000000..7cd7c85cea75338a038504df0a104183678ef693
GIT binary patch
literal 61108
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