Update Lighthouse CI workflow for pull requests#349
Update Lighthouse CI workflow for pull requests#349SadhanaShree25 wants to merge 17 commits intokeploy:mainfrom
Conversation
Signed-off-by: Sadhana Shree <180205437+SadhanaShree25@users.noreply.github.com>
|
Hi maintainers 👋 I have updated the Lighthouse CI workflow and fixed the artifact issue. Kindly review and approve the workflows so the checks can run successfully. Thank you! |
|
Hey @SadhanaShree25 |
There was a problem hiding this comment.
Pull request overview
This PR updates the Lighthouse GitHub Actions workflow to run directly on pull requests (instead of reacting to a separate workflow_run) and to generate/post a PR comment without relying on cross-workflow artifacts.
Changes:
- Switches the workflow trigger to
pull_requestand adjusts job permissions. - Adds checkout/setup/build steps and runs Lighthouse via
treosh/lighthouse-ci-action. - Generates a markdown file and posts it as a PR comment via
peter-evans/create-or-update-comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Sadhana Shree <180205437+SadhanaShree25@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Sadhana Shree <180205437+SadhanaShree25@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Sadhana Shree <180205437+SadhanaShree25@users.noreply.github.com>
|
hi @SadhanaShree25 |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
.github/workflows/lighthouse_comment.yml:53
issue-number: ${{ github.event.pull_request.number }}won’t be populated forworkflow_dispatchruns and will cause the comment action to fail. If this workflow is intended to be manually dispatched, pass the PR number as an input (or derive it via the API from a branch/sha) and use that value here.
with:
issue-number: ${{ github.event.pull_request.number }}
body-path: lighthouse-comment.md
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
* feat: setup Playwright e2e testing infrastructure Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * feat: add environment variables for WordPress API in Playwright config Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * feat: enhance Playwright tests with new homepage spec and build steps Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * fix: update Playwright config to use hardcoded WordPress API URLs Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * fix: update Playwright workflow permissions and add continue-on-error for PR comments Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * test infrastructure and workflow updates. Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * test: Add comprehensive Playwright E2E for navigation and more stories component. Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * Mock node js server Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * Mock json data Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * test: extensive Playwright test coverage for components Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * Fixing CI Failures for webkit browser Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * Component Test - Footer and Heropost Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * Fixing flaky and failed test for webkit browser Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * Playwright test for PostHeader as well as PostBody Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * Removing the PR commenting feature for now Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * WebKit error fixed Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * MoreStories webkit error fixed Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * Fixing flaky MoreStories webkit test Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * Update tests/components/PostHeader.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Update tests/components/PostBody.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Refactor viewport checks in Navigation and HomePage tests for improved clarity Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> * Add tests for ScrollToTop component functionality and accessibility Signed-off-by: Deep <deep@example.com> * Add tests for TableContents component functionality on desktop and mobile Signed-off-by: Deep <deep@example.com> * Add tests for Tag component functionality and accessibility Signed-off-by: Deep <deep@example.com> * Add tests for Testimonials component functionality and accessibility Signed-off-by: Deep <deep@example.com> * Add tests for TopBlogs component functionality and accessibility Signed-off-by: Deep <deep@example.com> * E2E Test for technology page Signed-off-by: Deep <deep@example.com> * E2E Test for technology post page Signed-off-by: Deep <deep@example.com> * Update tests/components/Tag.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Update tests/components/ScrollToTop.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Update tests/components/Tag.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Update tests/pages/TechnologyPostPage.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Update tests/components/TableContents.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Update tests/pages/TechnologyPage.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Refactor navigation logic in PostHeader and ScrollToTop tests to use href attribute for improved reliability Signed-off-by: Deep <deep@example.com> * Playwright config and CI changes Signed-off-by: Deep <deep@example.com> * Using build server instead of dev Signed-off-by: Deep <deep@example.com> * remove waitForTimeout as Playwright natively handles dynamic UI readiness Signed-off-by: Deep <deep@example.com> * remove waitForTimeout as Playwright natively handles dynamic UI readiness-2 Signed-off-by: Deep <deep@example.com> * Removing gaurds in core structural elements Signed-off-by: Deep <deep@example.com> * refactor: simplify visibility checks for LinkedIn and Slack social links in footer tests Signed-off-by: Deep <deep@example.com> * refactor: add data-testid attributes for improved test targeting in components Signed-off-by: Deep <deep@example.com> * test: add data-testid attributes for footer and tags sections to improve test targeting Signed-off-by: Deep <deep@example.com> * Update tests/components/ScrollToTop.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Update tests/components/TopBlogs.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Update tests/components/TableContents.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Update tests/components/MoreStories.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Update tests/components/PostBody.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Update tests/components/ScrollToTop.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Update tests/components/TableContents.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Add tests for Author Detail Page and Authors Index Page component availability Signed-off-by: Deep <deep@example.com> * Add tests for Community Page, Community Post Page, and Community Search Page component availability Signed-off-by: Deep <deep@example.com> * Add tests for Tag Detail Page and Tags Index Page component availability Signed-off-by: Deep <deep@example.com> * Add tests for Not Found Page and Search Page component availability Signed-off-by: Deep <deep@example.com> * Add tests for Mobile Layout and Navigation responsiveness Signed-off-by: Deep <deep@example.com> * Add tests for API Mocking and SEO Meta Tags configuration Signed-off-by: Deep <deep@example.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Refactor tests for improved visibility checks and assertions in Navigation, PostHeader, ScrollToTop, TableContents, HomePage, and TechnologyPostPage components Signed-off-by: Deep <deep@example.com> * Update component visibility assertions in various test files for improved accuracy Signed-off-by: Deep <deep@example.com> * Comment out unused device configurations for Firefox and Webkit in Playwright config Signed-off-by: Deep <deep@example.com> * Add community posts fixture and update mock server to handle community category queries Signed-off-by: Deep <deep@example.com> * Simplify Playwright E2E tests configuration by removing browser matrix and hardcoding to chromium Signed-off-by: Deep <deep@example.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Enhance component tests for improved visibility and accuracy across various pages Signed-off-by: Deep <deep@example.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Enhance test reliability by adding timeout and visibility checks in various components Signed-off-by: Deep <deep@example.com> * Update @types/node to version 18.19.130 and add engines field for Node.js compatibility Signed-off-by: Deep <deep@example.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Enhance mobile layout tests by adding max width checks and improving visibility assertions Signed-off-by: Deep <deep@example.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Refactor TOC mobile tests to improve dropdown item selection and visibility checks Signed-off-by: Deep <deep@example.com> * Refactor TOC component tests to remove conditional click and ensure visibility checks for first post Signed-off-by: Deep <deep@example.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Refactor Playwright configuration and mobile layout tests to improve horizontal overflow checks Signed-off-by: Deep <deep@example.com> * Refactor horizontal overflow epsilon to use WIDTH_EPSILON for consistency in mobile layout tests Signed-off-by: Deep <deep@example.com> * Refactor test interactions to ensure visibility and enablement before clicks across multiple components Signed-off-by: Deep <deep@example.com> * Refactor tests in ScrollToTop, TableContents, TechnologyPostPage, and MobileNavigation for improved visibility and reliability of elements before interactions Signed-off-by: Deep <deep@example.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> * Refactor navigation tests to improve URL wait conditions and enhance locator strategies for better reliability Signed-off-by: Deep <deep@example.com> * Refactor environment variable loading to improve error handling and provide clearer warnings when .env.test is missing Signed-off-by: Deep <deep@example.com> * fix: improve test stability by adding timeouts to element visibility checks and refining URL wait conditions in tests. Signed-off-by: Deep <deep@example.com> * refactor: Enhance Playwright tests by adding data-testid attributes to components and improving test selectors. Signed-off-by: Deep <deep@example.com> * refactor: enhance Playwright test reliability by using explicit waits for content and data-testid locators. Signed-off-by: Deep <deep@example.com> --------- Signed-off-by: DSingh0304 <deepshekhar0306@gmail.com> Signed-off-by: Deep Shekhar Singh <deepshekhar0306@gmail.com> Signed-off-by: Deep <deep@example.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Deep <deep@example.com> Co-authored-by: Manas Manohar <21006907+manasmanohar@users.noreply.github.com>
* Add sidebar ad image with fallback, clickable signup link, and orange glow hover effect Signed-off-by: dhananjay6561 <dhananjayaggarwal6561@gmail.com> * resolved copilot comments Signed-off-by: dhananjay6561 <dhananjayaggarwal6561@gmail.com> --------- Signed-off-by: dhananjay6561 <dhananjayaggarwal6561@gmail.com> Co-authored-by: Neha Gupta <gneha21@yahoo.in>
Add analytics script and whitelist its endpoint in CSP connect-src. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Neha Gupta <gneha21@yahoo.in>
* fix: update analytics and CSP configuration Add analytics script and whitelist its endpoint in CSP connect-src. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: resolve CSP duplication and Cache-Control scoping issues in vercel.json * fix: move telemetry script to _app.tsx and remove unsafe Cache-Control from vercel.json --------- Signed-off-by: Neha Gupta <gneha21@yahoo.in> Co-authored-by: Shubham Jain <shubhamkjain@outlook.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Neha Gupta <gneha21@yahoo.in>
Signed-off-by: dhananjay6561 <dhananjayaggarwal6561@gmail.com>
* aeo update Signed-off-by: Neha Gupta <gneha21[at]yahoo> * fix: add llms-full.txt reference to blog llms.txt Blog llms.txt was missing a pointer to the comprehensive llms-full.txt, reducing discoverability for AI consumers that only read llms.txt. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * feat: add canonical URLs and og:url to blog posts - Add canonicalUrl prop to Meta and Layout components - Render <link rel="canonical"> and <meta property="og:url"> per post - Add og:type=article meta tag - Pass canonicalUrl from community/[slug] and technology/[slug] pages Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve all 6 copilot review comments on PR keploy#356 aiReferralTracker.ts: - Parse referrer with URL() and match hostname exactly or via endsWith('.'+domain) to prevent substring false positives - Declare Window.dataLayer type globally, use ??= for type safety - Remove all (window as any) casts _app.tsx: - Track AI referrals on route changes via Router.events, not just initial mount meta.tsx: - Make og:type configurable via prop (defaults to "article") - Homepage now passes ogType="website" _document.tsx: - Use getOrganizationSchema() from lib/structured-data instead of inline duplicate Organization schema index.tsx: - Remove duplicate Organization schema (already in _document.tsx) - Pass ogType="website" to Layout layout.tsx: - Pass ogType prop through to Meta component SeoMeta.spec.ts: - Add tests for canonical URL, og:url on post pages - Add test for og:type="website" on homepage - Add test for og:type="article" on post pages Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 4 copilot review comments (round 2) pages/index.tsx: - Remove unused getOrganizationSchema import pages/_app.tsx: - Revert route-change tracking — document.referrer doesn't change on SPA navigations, so re-firing would duplicate ai_referral events. Track only on initial landing. utils/aiReferralTracker.ts: - Widen dataLayer type to unknown[] to avoid TypeScript friction with gtag's non-record pushes pages/_document.tsx: - Use shared constants (SITE_URL, ORG_NAME, MAIN_SITE_URL) from lib/structured-data instead of hard-coded URLs in Blog schema Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 4 copilot review comments (round 3) layout.tsx: - Default ogType to "website" instead of "article" — non-post pages (tag, author, search) were incorrectly emitting og:type=article technology/[slug].tsx, community/[slug].tsx: - Pass ogType="article" explicitly from post detail pages - Only set canonicalUrl when post slug is available (not during fallback render) to avoid incorrect canonical on loading state SeoMeta.spec.ts: - Add e2e test for AI referral tracker — verifies dataLayer event is pushed on UTM-attributed landing (?utm_source=chatgpt) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 2 copilot review comments (round 4) SeoMeta.spec.ts: - Use page.waitForFunction instead of immediate evaluate to avoid flaky test — trackAiReferral runs in useEffect after hydration llms.txt: - Clarify that llms-full.txt is hosted on the main site (landing), not in blog-website repo. URL is correct since blog is proxied through landing's Vercel deployment. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> --------- Signed-off-by: Neha Gupta <gneha21[at]yahoo> Signed-off-by: slayerjain <shubhamkjain@outlook.com> Co-authored-by: Neha Gupta <gneha21[at]yahoo> Co-authored-by: slayerjain <shubhamkjain@outlook.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat: enrich blog structured data and llms.txt for GEO/AEO lib/structured-data.ts: - Add dateModified, articleSection to BlogPosting schema - Add author Person with url using sanitizeAuthorSlug (matches actual routes) - Add publisher logo width/height for ImageObject compliance - Add getBlogSchema() export using shared constants lib/api.ts: - Add modified field to PostFields GraphQL fragment pages/_document.tsx: - Add Organization and Blog JSON-LD via shared helpers (single source) pages/technology/[slug].tsx, pages/community/[slug].tsx: - Pass dateModified and articleSection to BlogPosting schema public/llms.txt: - Rewrite with blog architecture, 500+ articles, categories, awards, products, author pages, and comparison hub link Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 2 copilot comments on PR keploy#359 lib/structured-data.ts: - Handle ppmaAuthorName as array (sometimes returned as array from WordPress) — take first element if array public/llms.txt: - Clarify author URL uses sanitized slug format, not raw name Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: align authorName type with runtime handling Type authorName as string | string[] to match WordPress ppmaAuthorName which can be either format. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 2 copilot comments on PR keploy#359 lib/structured-data.ts: - Handle empty authorName array by falling back to ORG_NAME - Remove hardcoded logo width/height that don't match actual asset Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * Update public/llms.txt Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: resolve 4 copilot comments on PR keploy#359 lib/structured-data.ts: - Only set author.url for real authors, not org fallback (avoids /authors/keploy 404) tests/fixtures: - Add modified field to single-post, technology-posts, community-posts mock fixtures public/llms.txt: - Remove hardcoded star count that goes stale Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: add modified field to revision node query Ensures dateModified in JSON-LD stays accurate during preview/revision flows where Object.assign overwrites post fields from revision data. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 3 copilot comments on PR keploy#359 lib/structured-data.ts: - Use BLOG_NAME constant instead of hardcoded string in getBlogSchema - Simplify Blog publisher logo to URL string (SVG has no fixed dimensions) types/post.ts: - Add optional modified field to Post interface Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: restore ImageObject for Blog publisher logo Keep consistent with BlogPosting publisher logo format. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: use primitive number type instead of boxed Number Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: add actual logo dimensions to BlogPosting publisher Group.png is 462x539 — added matching width/height to ImageObject. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 4 copilot comments on PR keploy#359 - Reformat all test fixture JSON files with consistent indentation - Use ORG_LOGO_URL in getBlogSchema publisher logo for consistency with getOrganizationSchema and getBlogPostingSchema Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> --------- Signed-off-by: slayerjain <shubhamkjain@outlook.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Neha Gupta <gneha21@yahoo.in> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: slayerjain <shubhamkjain@outlook.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ploy#362) * fix: repair malformed vercel.json (missing closing braces) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 799 duplicate meta descriptions flagged by Bing Root cause: listing pages (tag, author, search, index) used hardcoded or ultra-generic meta descriptions, not WordPress content. - community/index: fix copy-paste bug ("Technology" → "Community") - technology/index: unique 155-char description - tag/[slug]: dynamic description including tag name - tag/index: unique description for tag listing - authors/[slug]: dynamic description including author name - authors/index: unique description for author listing - search, community/search: conditional description with empty-state - community/[slug], technology/[slug]: quality gate for Yoast metaDesc (fallback to title-based description if Yoast desc is <60 chars) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * perf: fix blog Core Web Vitals (LCP, CLS, TBT) Font loading: - Remove render-blocking @import for Baloo 2 from CSS - Add non-blocking font preloads with print→all swap pattern - Remove duplicate per-page DM Sans link tags Third-party scripts: - Move all 5 analytics scripts to lazyOnload strategy - Remove duplicate telemetry script from _document.tsx Image optimization: - Add priority prop to CoverImage for LCP (post header only) - Add sizes attribute and explicit loading prop - Convert raw <img> to next/image in BlogSidebar - Add AVIF/WebP formats and 1-year cache TTL in next.config - Add content-visibility:auto and aspect-ratio for WP images JavaScript bundle: - Dynamic import CodeMirror, BlogSidebar, JsonDiffViewer - Remove duplicate PrismJS from slug pages - Replace framer-motion with CSS @Keyframes fadeIn (~30-40kB saved) - Remove AnimatePresence wrapper from _app.tsx Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: technical SEO — clean up sitemap, add canonicals, fix duplicates - Remove 16 problematic URLs from static sitemap (non-blog URLs, wrong-category duplicates) - Cross-category duplicate fix: posts at wrong /community/ or /technology/ path now 301 redirect to correct category - Add canonical URLs to 7 listing pages (index, tag, author) - Add noindex to search pages - Fix soft 404 on empty author pages (return proper 404) - Fix 302→301 redirects on technology slug pages - Fix robots.txt sitemap URL (www.keploy.io → keploy.io) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: resolve 12 copilot review comments on PR keploy#362 tag/[slug].tsx: - Handle undefined/string[] router.query.slug for title/description technology/[slug].tsx + community/[slug].tsx: - Add safeTitle guard for fallback render (prevents "undefined") - Apply description quality gate to both Layout and JSON-LD schema - Validate category redirect against ['community','technology'] allowlist - Fix unsafe post?.seo.title access _document.tsx: - Replace broken string onLoad with preload+stylesheet pattern (React ignores string event handlers in JSX) post-body.tsx: - Fix misleading comment about CodeMirror lazy imports post-body.module.css: - Replace unsupported attr() aspect-ratio with fixed 16/9 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: address remaining Copilot review comments on PR keploy#362 - Category redirect: validate against ['community','technology'] allowlist, return notFound for unknown categories instead of guessing - Community redirect: use data.post.slug (canonical CMS slug) not request param - Fallback description: return generic description during router.isFallback instead of "Learn about Loading..." - CSS: remove forced 16/9 aspect-ratio on WP images (browsers use intrinsic ratio) - BlogSidebar: add sizes="320px" to next/image to prevent oversized downloads - CodeMirror: clarify comment about lazy loading (PostBody is the dynamic boundary) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: address round 2 Copilot review on blog PR keploy#362 - Update E2E test assertion for new technology index description - Strip HTML tags and entities from post.title before meta/JSON-LD - Return notFound for invalid/empty author slugs (was soft 404) - Add contain-intrinsic-size to content-visibility:auto for CLS stability - Correct framer-motion removal comment in layout.tsx Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: pass tag slug as prop from getStaticProps, make CoverImage sizes configurable - tag/[slug]: pass tagSlug from getStaticProps so SSR meta tags are correct - CoverImage: make sizes a prop (default 780px for post header, overridable for smaller card contexts) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: replace cross-category redirect with notFound to fix prerendering error redirect cannot be returned from getStaticProps during prerendering. Return notFound instead — the post will be served from its correct category path at runtime via ISR fallback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: E2E failure — add community post fixture to mock server, decode HTML entities - Add single-community-post.json fixture with category "community" - Mock server now returns community-categorized post for community slugs - Decode HTML entities in safeTitle instead of stripping them (’ → ') Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: restore 301 redirect for cross-category posts to preserve SEO signals notFound drops link equity. Redirect is safe because getStaticPaths only returns same-category paths — the redirect only fires at ISR runtime for fallback pages, not during next build prerendering. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: extract SEO helpers, fix fixture quotes, add motion-reduce - Extract sanitizeTitle/getSafeDescription to utils/seo.ts (shared between technology and community slug pages) - Fix single-community-post.json: use double-quoted HTML attrs to match the regex patterns in page code - Add motion-reduce:animate-none to layout fade-in for accessibility Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: harden SEO helpers — sanitize metaDesc, handle empty title, normalize whitespace - sanitizeTitle returns empty string instead of 'Loading...' placeholder - getSafeDescription sanitizes metaDesc (strip tags, decode entities, trim) before length gate - Handle empty safeTitle gracefully in fallback description - Normalize whitespace in all decoded strings Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> --------- Signed-off-by: slayerjain <shubhamkjain@outlook.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Neha Gupta <gneha21@yahoo.in>
* fix: crash on 404 page when post title or excerpt is null WordPress can return posts with null title/excerpt. NotFoundPage.tsx called .toLowerCase() on these without null-checking, causing "Cannot read properties of null" during both SSR prerendering and client-side rendering. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: address Copilot review — null-safe filtering across all search components - Precompute normalizedSearchTerm to avoid repeated toLowerCase() calls - Apply null-safe filtering to more-stories.tsx and community/search.tsx - Update Post type: title and excerpt are string | null (matches WP reality) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: normalize null title/excerpt at component boundary + harden getExcerpt - NotFoundPage: normalize allPosts once via .map() so downstream rendering (getExcerpt, dangerouslySetInnerHTML) never sees null - getExcerpt: return empty string for null/undefined input - Mock fixture: add post with null title/excerpt to catch regressions in E2E tests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: normalize null title/excerpt in more-stories and community search Posts with null title/excerpt from WordPress are now defaulted to empty strings after filtering, before they reach rendering components (HeroPost, getExcerpt, dangerouslySetInnerHTML). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: add postId to null fixture, clean up redundant fallbacks, add E2E test - Add missing postId to null title/excerpt test fixture - Remove redundant || '' in filter (allPosts.map already normalizes) - Add E2E test asserting no pageerror events on 404 page Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: normalize null posts at API layer, revert Post type to non-nullable - Add normalizePostNode/normalizePostEdges in lib/api.ts — defaults null title/excerpt to empty string at the data boundary - Revert Post.title/excerpt back to string (not nullable) since API layer now guarantees non-null values - Fix E2E test: register pageerror handler before navigation, use dedicated 404 URL instead of page.url() Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: normalize revision node before Object.assign to prevent null re-introduction getPostAndMorePosts() applies revision data via Object.assign which can overwrite the already-normalized title/excerpt with null values from the revision node. Normalize the revision before applying it. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> --------- Signed-off-by: slayerjain <shubhamkjain@outlook.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Neha Gupta <gneha21@yahoo.in>
…l.txt (keploy#364) * fix: crash on 404 page when post title or excerpt is null WordPress can return posts with null title/excerpt. NotFoundPage.tsx called .toLowerCase() on these without null-checking, causing "Cannot read properties of null" during both SSR prerendering and client-side rendering. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com> * fix: address Copilot review — null-safe filtering across all search components - Precompute normalizedSearchTerm to avoid repeated toLowerCase() calls - Apply null-safe filtering to more-stories.tsx and community/search.tsx - Update Post type: title and excerpt are string | null (matches WP reality) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: normalize null title/excerpt at component boundary + harden getExcerpt - NotFoundPage: normalize allPosts once via .map() so downstream rendering (getExcerpt, dangerouslySetInnerHTML) never sees null - getExcerpt: return empty string for null/undefined input - Mock fixture: add post with null title/excerpt to catch regressions in E2E tests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: normalize null title/excerpt in more-stories and community search Posts with null title/excerpt from WordPress are now defaulted to empty strings after filtering, before they reach rendering components (HeroPost, getExcerpt, dangerouslySetInnerHTML). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: add postId to null fixture, clean up redundant fallbacks, add E2E test - Add missing postId to null title/excerpt test fixture - Remove redundant || '' in filter (allPosts.map already normalizes) - Add E2E test asserting no pageerror events on 404 page Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: normalize null posts at API layer, revert Post type to non-nullable - Add normalizePostNode/normalizePostEdges in lib/api.ts — defaults null title/excerpt to empty string at the data boundary - Revert Post.title/excerpt back to string (not nullable) since API layer now guarantees non-null values - Fix E2E test: register pageerror handler before navigation, use dedicated 404 URL instead of page.url() Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: normalize revision node before Object.assign to prevent null re-introduction getPostAndMorePosts() applies revision data via Object.assign which can overwrite the already-normalized title/excerpt with null values from the revision node. Normalize the revision before applying it. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * feat(seo): GEO/AEO Phase 1 — fix meta tags, favicon paths, robots.txt, and add llms-full.txt - Fix favicon paths in meta.tsx: add /blog/ prefix and .png extension - Add og:site_name and og:locale meta tags for better social sharing - Fix subscribe-newsletter alt text from generic "Image" to descriptive - Remove invalid subdomain path disallows from robots.txt - Add llms-full.txt for comprehensive AI/LLM crawler content - Update llms.txt to link to llms-full.txt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: address Copilot review — remove redundant .map() normalization, harden test - Remove redundant .map() normalization in search, more-stories, NotFoundPage since fetchAPI already normalizes title/excerpt to empty strings - Use null-safe access in filter predicates instead - Harden NotFoundPage test: wait for load state, capture console errors, add post-render buffer to catch hydration errors Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * perf: memoize allPosts and filteredAllPosts in NotFoundPage Wrap with useMemo to avoid O(n) recomputation on every countdown tick (component re-renders every second). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix(test): only catch pageerror in 404 test, not console.error Console.error captures CSP violations and network failures from the test environment that are unrelated to our code changes. Revert to pageerror-only which catches actual uncaught exceptions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> --------- Signed-off-by: slayerjain <shubhamkjain@outlook.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Neha Gupta <gneha21@yahoo.in>
…#365) * fix: GSC audit — 28 duplicate URL redirects, OG tags, favicon, dateModified - Added 28 permanent redirects for duplicate /community/ and /technology/ blog URLs based on WordPress category mapping - Added 2 broken backlink redirects (end-to-end-testing, cursor-vs-copilot) - Added article:published_time meta tag to post pages - Fixed favicon paths to reference correct files with /blog/ prefix - Fixed structured data logo URL - Removed duplicate font preload from authors page Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> * fix: update publisher.logo dimensions to 512x512 to match android-chrome-512x512.png Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Neha Gupta <gneha21@yahoo.in> --------- Signed-off-by: Neha Gupta <gneha21@yahoo.in> Co-authored-by: Neha Gupta <gneha21@yahoo.in> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Alok Kumar <101720005+ALOK07K@users.noreply.github.com>
|
@amaan-bhati |
Related Tickets & Documents
Description
Changes
Type of Change
Testing
Demo
Environment and Dependencies
Checklist