Skip to content

SEO overhaul + Blog section - #59

Merged
adminvns merged 1 commit into
mainfrom
seo-and-blog
Jul 14, 2026
Merged

adminvns merged 1 commit into
mainfrom
seo-and-blog

Conversation

@adminvns

@adminvns adminvns commented Jul 14, 2026 •

Copy link
Copy Markdown
Owner

Summary

SEO overhaul + new Blog section for the portfolio.

SEO

  • Rewrote title, meta description, keywords, Open Graph & Twitter tags around "Senior QA Automation Engineer / AI Test Automation"
  • Enriched JSON-LD: Person (skills, certifications, employer→Hitachi), WebSite, ProfilePage, Blog graph
  • Fixed multiple-H1, added alt text, preconnect hints, robots directives
  • Deleted template-junk pages (inner-page / portfolio-details) that were in the sitemap
  • Allowed AI crawlers (GPTBot, ClaudeBot, PerplexityBot, etc.) in robots.txt

UI / bug fixes

  • Fixed broken hero background-video path
  • Fixed day-mode contrast bugs; made the left sidebar theme-aware (light in day mode)
  • Official logos for Tosca (Tricentis), Appium; swapped Puppeteer → pytest
  • Skill badge levels updated; text-logo overflow fixed
  • Dynamic experience counter (auto-calculates years+months from Aug 2020)

Blog (new)

  • Blog section on homepage + nav link
  • 3 posts (markdown source + rendered static HTML with per-post SEO, JSON-LD BlogPosting, breadcrumbs): DeepEval, Mobilewright, Playwright + MCP
  • Posts added to sitemap.xml

Summary by CodeRabbit

  • New Features

    • Added a Blog section with three featured articles and dedicated article pages.
    • Added new articles covering DeepEval, Mobilewright, and Playwright with MCP.
    • Experience duration now updates automatically across the site.
    • Added improved SEO metadata, structured data, sitemap entries, and AI crawler access.
  • UI Improvements

    • Refined light and dark theme colors, navigation, hero, footer, skills, and blog layouts.
    • Added responsive blog styling and new skill logo badges.

@adminvns

adminvns commented Jul 14, 2026 •

Copy link
Copy Markdown
Owner Author

✅ Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
✅ Open Source Security 0 0 0 0 0 issues
✅ Code Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@coderabbitai

coderabbitai Bot commented Jul 14, 2026 •

Copy link
Copy Markdown

Walkthrough

The portfolio homepage was refreshed with updated metadata, skills, dynamic experience text, and blog cards. Shared CSS now supports revised themes, skill chips, and blog layouts. Three new blog articles were added in Markdown and static HTML, with crawler rules and sitemap entries updated for discoverability.

Changes

Portfolio presentation and blog integration

Layer / File(s) Summary
Shared theme and blog layout
assets/css/style.css
Theme colors, navigation, hero, footer, skill badges, logo chips, blog cards, article typography, and responsive blog behavior were updated.
Homepage content and dynamic experience
index.html
Homepage metadata, navigation, hero, profile content, skills, resume duration spans, blog cards, and runtime experience calculation were updated.
Crawler access and sitemap
robots.txt, sitemap.xml
AI crawler access rules were added, and sitemap entries were refreshed for the homepage and blog articles.

Blog articles

Layer / File(s) Summary
DeepEval article
blog/deepeval-llm-testing-guide-for-qa-engineers.md, blog/deepeval-llm-testing-guide-for-qa-engineers.html
Adds a DeepEval QA guide covering G-Eval, evaluation metrics, CI thresholds, structured metadata, theme switching, and article navigation.
Mobilewright article
blog/mobilewright-playwright-for-mobile-testing.md, blog/mobilewright-playwright-for-mobile-testing.html
Adds a Mobilewright mobile-testing article with Playwright-style examples, accessibility-tree automation, AI-agent support, metadata, and theme switching.
Playwright MCP article
blog/playwright-mcp-ai-browser-automation.md, blog/playwright-mcp-ai-browser-automation.html
Adds an article about Playwright MCP, accessibility-tree browser automation, agent workflows, token trade-offs, structured metadata, and theme switching.

Estimated code review effort: 4 (Complex) | ~60 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately captures the main themes of the PR: SEO updates and adding a Blog section.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch seo-and-blog

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.

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@adminvns
adminvns merged commit d1ed478 into main Jul 14, 2026
5 of 6 checks passed
@adminvns
adminvns deleted the seo-and-blog branch July 14, 2026 19:11

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (5)
blog/deepeval-llm-testing-guide-for-qa-engineers.html (1)

247-250: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Avoid adding an unintended light class to the body.

The shared theme initialization script across the blog templates blindly adds the localStorage value to the <body> element's class list. If a user previously switched to light mode, 'light' is stored in local storage, which will unnecessarily add a light class to the body on their next visit. To keep the DOM clean, strictly verify for 'dark-mode' before modifying the classes.

  • blog/deepeval-llm-testing-guide-for-qa-engineers.html#L247-L250: check strictly for 'dark-mode' instead of checking for truthiness.
  • blog/mobilewright-playwright-for-mobile-testing.html#L228-L231: apply the same strict check for 'dark-mode'.
  • blog/playwright-mcp-ai-browser-automation.html#L226-L229: apply the same strict check for 'dark-mode'.
♻️ Proposed refactor
-    if (currentTheme) {
-      document.body.classList.add(currentTheme);
-      if (currentTheme === 'dark-mode') { toggleSwitch.checked = true; }
-    }
+    if (currentTheme === 'dark-mode') {
+      document.body.classList.add('dark-mode');
+      toggleSwitch.checked = true;
+    }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@blog/deepeval-llm-testing-guide-for-qa-engineers.html` around lines 247 -
250, Update the shared theme initialization around currentTheme in
blog/deepeval-llm-testing-guide-for-qa-engineers.html:247-250,
blog/mobilewright-playwright-for-mobile-testing.html:228-231, and
blog/playwright-mcp-ai-browser-automation.html:226-229 to modify body classes
only when currentTheme is exactly 'dark-mode'; retain setting
toggleSwitch.checked for that dark-mode case and avoid adding a stored 'light'
value.
index.html (4)

51-166: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Blog BlogPosting entries omit image.

Cross-checked: @ids, dates, and URLs in the graph line up correctly with the new Blog section (Lines 805-847) and Blog anchor. One gap — image is Google's most consistently recommended property (alongside headline/datePublished/author) for Article/BlogPosting rich-result eligibility, and none of the three blogPost entries have it. If the full per-article schema on the individual blog pages already includes image, this may be low priority; otherwise consider adding it here too.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@index.html` around lines 51 - 166, Add an image property to each BlogPosting
entry in the Blog graph, using the corresponding article’s existing
representative image URL and preserving the current headline, URL,
datePublished, and author values.

450-457: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Misleading class name: tosca-logo now styles the DeepEval chip.

Tosca moved to .skill-logo-chip.tricentis-chip (Lines 422-424), so .tosca-logo's text-chip styling is now applied to the unrelated "AI QA / DeepEval" card. Future readers searching for Tosca-related styles will be misled.

♻️ Suggested rename
-<div class="skill-logo-text tosca-logo">
+<div class="skill-logo-text ai-qa-logo">

(and update the corresponding .tosca-logo selectors in style.css's @media (max-width: 575px) block.)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@index.html` around lines 450 - 457, Rename the DeepEval card’s `tosca-logo`
class to a DeepEval-specific name, and update every matching selector in the
`@media (max-width: 575px)` block of `style.css`; leave Tosca styling under
`.skill-logo-chip.tricentis-chip` unchanged.

805-847: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider <time datetime> for post dates.

.blog-meta publish dates (Lines 821, 830, 839) are plain text; wrapping them in <time datetime="2026-07-14">…</time> would make them machine-readable and reinforces the SEO intent of this PR without any visual change.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@index.html` around lines 805 - 847, Update the three .blog-meta publish dates
in the blog section to wrap each visible date in a time element with the
matching ISO datetime attribute: 2026-07-14, 2026-07-05, and 2026-06-20.
Preserve the existing displayed date text and styling.

45-49: 🚀 Performance & Scalability | 🔵 Trivial | 💤 Low value

cdn.simpleicons.org is used but not preconnected.

The Tricentis (Line 423) and Appium (Line 445) icons both load from cdn.simpleicons.org, but the new preconnect list omits it while covering cdnjs.cloudflare.com/cdn.jsdelivr.net. Since it's fetched at least twice, it's worth warming the connection too.

⚡ Proposed addition
   <link rel="preconnect" href="https://cdn.jsdelivr.net">
+  <link rel="preconnect" href="https://cdn.simpleicons.org">
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@index.html` around lines 45 - 49, Add a preconnect link for
https://cdn.simpleicons.org alongside the existing third-party origin preconnect
entries in index.html, preserving the current attributes and ordering style.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@blog/deepeval-llm-testing-guide-for-qa-engineers.html`:
- Around line 104-105: add aria-label="Toggle dark mode" to the theme toggle
checkbox input in blog/deepeval-llm-testing-guide-for-qa-engineers.html lines
104-105, blog/mobilewright-playwright-for-mobile-testing.html lines 104-105, and
blog/playwright-mcp-ai-browser-automation.html lines 104-105.

In `@sitemap.xml`:
- Line 5: Update the sitemap’s lastmod value from the future date to the current
date or an earlier valid date, keeping the existing YYYY-MM-DD format.

---

Nitpick comments:
In `@blog/deepeval-llm-testing-guide-for-qa-engineers.html`:
- Around line 247-250: Update the shared theme initialization around
currentTheme in blog/deepeval-llm-testing-guide-for-qa-engineers.html:247-250,
blog/mobilewright-playwright-for-mobile-testing.html:228-231, and
blog/playwright-mcp-ai-browser-automation.html:226-229 to modify body classes
only when currentTheme is exactly 'dark-mode'; retain setting
toggleSwitch.checked for that dark-mode case and avoid adding a stored 'light'
value.

In `@index.html`:
- Around line 51-166: Add an image property to each BlogPosting entry in the
Blog graph, using the corresponding article’s existing representative image URL
and preserving the current headline, URL, datePublished, and author values.
- Around line 450-457: Rename the DeepEval card’s `tosca-logo` class to a
DeepEval-specific name, and update every matching selector in the `@media
(max-width: 575px)` block of `style.css`; leave Tosca styling under
`.skill-logo-chip.tricentis-chip` unchanged.
- Around line 805-847: Update the three .blog-meta publish dates in the blog
section to wrap each visible date in a time element with the matching ISO
datetime attribute: 2026-07-14, 2026-07-05, and 2026-06-20. Preserve the
existing displayed date text and styling.
- Around line 45-49: Add a preconnect link for https://cdn.simpleicons.org
alongside the existing third-party origin preconnect entries in index.html,
preserving the current attributes and ordering style.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d17c474f-08b5-46fa-b5cc-0a91129dcfb9

📥 Commits

Reviewing files that changed from the base of the PR and between a5ec712 and 7e4d9c2.

📒 Files selected for processing (12)
  • assets/css/style.css
  • blog/deepeval-llm-testing-guide-for-qa-engineers.html
  • blog/deepeval-llm-testing-guide-for-qa-engineers.md
  • blog/mobilewright-playwright-for-mobile-testing.html
  • blog/mobilewright-playwright-for-mobile-testing.md
  • blog/playwright-mcp-ai-browser-automation.html
  • blog/playwright-mcp-ai-browser-automation.md
  • index.html
  • inner-page.html
  • portfolio-details.html
  • robots.txt
  • sitemap.xml
💤 Files with no reviewable changes (2)
  • inner-page.html
  • portfolio-details.html

Comment on lines +104 to +105
<label class="theme-switch" for="checkbox">
<input type="checkbox" id="checkbox" />

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add an accessible name to the theme toggle checkbox.

The theme switch uses an <input type="checkbox"> that lacks an accessible name across the blog templates. Since the parent <label> only contains decorative icons, screen readers will not announce the purpose of this control.

  • blog/deepeval-llm-testing-guide-for-qa-engineers.html#L104-L105: add aria-label="Toggle dark mode" to the <input> element.
  • blog/mobilewright-playwright-for-mobile-testing.html#L104-L105: add aria-label="Toggle dark mode" to the <input> element.
  • blog/playwright-mcp-ai-browser-automation.html#L104-L105: add aria-label="Toggle dark mode" to the <input> element.
💡 Proposed fix
     <label class="theme-switch" for="checkbox">
-      <input type="checkbox" id="checkbox" />
+      <input type="checkbox" id="checkbox" aria-label="Toggle dark mode" />
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<label class="theme-switch" for="checkbox">
<input type="checkbox" id="checkbox" />
<label class="theme-switch" for="checkbox">
<input type="checkbox" id="checkbox" aria-label="Toggle dark mode" />
📍 Affects 3 files
  • blog/deepeval-llm-testing-guide-for-qa-engineers.html#L104-L105 (this comment)
  • blog/mobilewright-playwright-for-mobile-testing.html#L104-L105
  • blog/playwright-mcp-ai-browser-automation.html#L104-L105
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@blog/deepeval-llm-testing-guide-for-qa-engineers.html` around lines 104 -
105, add aria-label="Toggle dark mode" to the theme toggle checkbox input in
blog/deepeval-llm-testing-guide-for-qa-engineers.html lines 104-105,
blog/mobilewright-playwright-for-mobile-testing.html lines 104-105, and
blog/playwright-mcp-ai-browser-automation.html lines 104-105.

Comment thread sitemap.xml
<url>
<loc>https://adminvns.github.io/</loc>
<lastmod>2026-01-26</lastmod>
<lastmod>2026-07-15</lastmod>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Fix future date in <lastmod>.

The <lastmod> date is set to 2026-07-15, which is in the future. Search engine crawlers typically ignore future dates in sitemaps or flag them as invalid. Please update this to the current date or earlier.

🐛 Proposed fix
-    <lastmod>2026-07-15</lastmod>
+    <lastmod>2026-07-14</lastmod>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<lastmod>2026-07-15</lastmod>
<lastmod>2026-07-14</lastmod>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sitemap.xml` at line 5, Update the sitemap’s lastmod value from the future
date to the current date or an earlier valid date, keeping the existing
YYYY-MM-DD format.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant