Skip to content

⚡ Bolt: Optimize background images in Sections 3, 4, and 5#87

Open
anyulled wants to merge 4 commits intomainfrom
jules-13019546950952754637-b4ffb071
Open

⚡ Bolt: Optimize background images in Sections 3, 4, and 5#87
anyulled wants to merge 4 commits intomainfrom
jules-13019546950952754637-b4ffb071

Conversation

@anyulled
Copy link
Owner

@anyulled anyulled commented Mar 13, 2026

💡 What: The optimization implemented is converting static CSS backgroundImage properties in components/sections/home8/section3.tsx, components/sections/home8/section4.tsx, and components/sections/home8/section5.tsx into Next.js <Image /> components. The parent containers have been given position: relative and isolation: isolate to maintain stacking context, while the images use zIndex: -1 and objectFit: cover.

🎯 Why: The performance problem it solves is that CSS background images are generally not optimized by Next.js. They bypass the image optimization pipeline, meaning users download larger, unoptimized raw image files instead of smaller WebP/AVIF formats, which negatively impacts load times and bandwidth.

📊 Impact: Reduces unoptimized duplicate network requests for the same background image across multiple sections. It leverages Next.js automatic image optimization and caching.

🔬 Measurement: Verify by loading the homepage in the browser and checking the network tab. The background image for Sections 3, 4, and 5 (header-bg20.png) will now be served from /_next/image rather than its raw path, confirming optimization.


PR created automatically by Jules for task 13019546950952754637 started by @anyulled

Summary by CodeRabbit

  • Refactor
    • Improved background image rendering across several home sections for better loading, layout stability, and visual consistency.
  • Tests
    • Updated end-to-end tests and selectors to match current page structure and search inputs.
  • Documentation
    • Cleaned up report formatting for clearer presentation.
  • Chores
    • Minor CI workflow formatting, small manifest/file formatting tweaks, and removal of an unused package override.

Convert CSS background images to Next.js `<Image />` components to enable automatic image optimization and caching.

Co-authored-by: anyulled <100741+anyulled@users.noreply.github.com>
@google-labs-jules
Copy link
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@vercel
Copy link

vercel bot commented Mar 13, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
devbcn Ready Ready Preview, Comment Mar 13, 2026 10:14am

@qodo-code-review
Copy link

Review Summary by Qodo

Optimize background images using Next.js Image components

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Convert CSS background images to Next.js Image components
• Enable automatic image optimization and caching pipeline
• Reduce unoptimized duplicate network requests across sections
• Apply proper z-index and positioning for layered backgrounds
Diagram
flowchart LR
  CSS["CSS backgroundImage<br/>properties"]
  NextImage["Next.js Image<br/>components"]
  Optimization["Automatic image<br/>optimization"]
  Cache["WebP/AVIF<br/>caching"]
  CSS -- "Convert to" --> NextImage
  NextImage -- "Enables" --> Optimization
  Optimization -- "Provides" --> Cache
Loading

Grey Divider

File Changes

1. components/sections/home8/section3.tsx ✨ Enhancement +5/-4

Convert section3 background to Next.js Image

• Replaced CSS backgroundImage with Next.js <Image /> component
• Added position: relative and isolation: isolate to parent container
• Applied objectFit: cover and zIndex: -1 to image styling
• Added explanatory comment about optimization benefits

components/sections/home8/section3.tsx


2. components/sections/home8/section4.tsx ✨ Enhancement +5/-5

Convert section4 background to Next.js Image

• Replaced CSS backgroundImage with Next.js <Image /> component
• Added position: relative and isolation: isolate to parent container
• Applied objectFit: cover and zIndex: -1 to background image
• Updated existing layer1 image with zIndex: -1 for proper stacking
• Added explanatory comment about optimization benefits

components/sections/home8/section4.tsx


3. components/sections/home8/section5.tsx ✨ Enhancement +4/-4

Convert section5 background to Next.js Image

• Replaced CSS backgroundImage with Next.js <Image /> component
• Added position: relative and isolation: isolate to parent container
• Applied objectFit: cover and zIndex: -1 to image styling
• Added explanatory comment about optimization benefits

components/sections/home8/section5.tsx


Grey Divider

Qodo Logo

@qodo-code-review
Copy link

qodo-code-review bot commented Mar 13, 2026

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider


Remediation recommended

1. Fill image lacks sizes 🐞 Bug ➹ Performance
Description
Section3/4/5 introduce <Image fill> background images without a sizes attribute, which can cause
the optimizer to select unnecessarily large responsive variants and increase bandwidth on common
viewports. This undermines the PR’s intended performance win by making the optimized requests
potentially heavier than needed.
Code

components/sections/home8/section3.tsx[R15-16]

+      {/* ⚡ Bolt: Using Next.js Image instead of CSS background-image to enable automatic image optimization and caching. Impact: Eliminates unoptimized duplicate network requests for this background image */}
+      <Image src="/assets/img/bg/header-bg20.png" alt="" fill style={{ objectFit: "cover", zIndex: -1 }} />
Evidence
The PR adds new fill background Images in sections 3/4/5 but omits sizes, while another existing
“background-like” fill image in the repo explicitly sets sizes="100vw" (and quality={85}),
indicating the expected approach for full-width backgrounds.

components/sections/home8/section3.tsx[8-17]
components/sections/home8/section4.tsx[15-26]
components/sections/home8/section5.tsx[72-84]
components/BackgroundCarousel.tsx[74-79]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
New background images were converted to `next/image` using `fill`, but the `sizes` prop is omitted. Without `sizes`, the image optimizer can’t accurately infer intended rendered width and may generate/serve unnecessarily large variants, reducing the performance benefit of the change.

### Issue Context
The repo already contains a precedent for full-width background-like `fill` usage that sets `sizes=&quot;100vw&quot;` (and `quality={85}`). Applying the same pattern here keeps image selection efficient and predictable.

### Fix Focus Areas
- components/sections/home8/section3.tsx[8-17]
- components/sections/home8/section4.tsx[15-26]
- components/sections/home8/section5.tsx[72-84]
- components/BackgroundCarousel.tsx[74-79]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances website performance by optimizing how background images are loaded. By migrating from traditional CSS background images to Next.js <Image /> components, the application now leverages Next.js's built-in image optimization and caching mechanisms. This change reduces the size of image assets delivered to users and minimizes redundant network requests, leading to faster page load times and a more efficient use of bandwidth.

Highlights

  • Image Optimization: Replaced static CSS backgroundImage properties with Next.js <Image /> components in section3.tsx, section4.tsx, and section5.tsx to leverage Next.js's automatic image optimization pipeline.
  • Performance Improvement: Eliminated unoptimized duplicate network requests for the header-bg20.png background image across multiple sections, improving load times and bandwidth usage by utilizing Next.js's image optimization and caching.
  • Styling Adjustments: Applied position: relative and isolation: isolate to parent containers, and zIndex: -1 with objectFit: cover to the new <Image /> components to maintain proper stacking context and visual presentation.
Changelog
  • components/sections/home8/section3.tsx
    • Imported the Image component from next/image.
    • Removed CSS backgroundImage properties and added position: relative and isolation: isolate to the main container.
    • Introduced a Next.js <Image /> component to render the header-bg20.png background image with fill, objectFit: cover, and zIndex: -1.
  • components/sections/home8/section4.tsx
    • Removed CSS backgroundImage properties and added position: relative and isolation: isolate to the main container.
    • Introduced a Next.js <Image /> component to render the header-bg20.png background image with fill, objectFit: cover, and zIndex: -1.
    • Added style={{ zIndex: -1 }} to an existing <Image /> component for layer1.png to ensure correct layering.
  • components/sections/home8/section5.tsx
    • Removed CSS backgroundImage properties and added position: relative and isolation: isolate to the main container.
    • Introduced a Next.js <Image /> component to render the header-bg20.png background image with fill, objectFit: cover, and zIndex: -1.
Activity
  • This pull request was automatically created by Jules for task 13019546950952754637, initiated by @anyulled.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@coderabbitai
Copy link

coderabbitai bot commented Mar 13, 2026

📝 Walkthrough

Walkthrough

Replaces CSS background-image usage with Next.js Image components in three home8 section components; updates Cypress selectors in two tests; removes a minimatch override in package.json; reformats a GitHub Actions scorecard workflow; and adjusts scorecard badge/report whitespace and formatting.

Changes

Cohort / File(s) Summary
Image component updates
components/sections/home8/section3.tsx, components/sections/home8/section4.tsx, components/sections/home8/section5.tsx
Replaced CSS background-image usage with Next.js Image components using fill and objectFit: 'cover'; containers updated to position: relative and isolation: isolate; negative zIndex applied; contextual comments added.
Cypress test updates
cypress/e2e/home/home-editions.cy.ts, cypress/e2e/talks-and-speakers-layout.cy.ts
Updated selectors and assertions to match new DOM structure: event header selector change and unified .talks-filter-bar search/filter selectors and expectations.
CI workflow formatting
.github/workflows/scorecard.yml
YAML indentation/structure reformatted only; job steps and behavior unchanged.
Dependency overrides
package.json
Removed minimatch entry from the overrides section.
Scorecard files formatting
scorecard-badge.json, scorecard-report.md
Minor whitespace/trailing-newline and table/spacing formatting changes in report and badge files; content/values unchanged.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰
I hopped through code at break of day,
Painted backs became Image play.
Layers settle, tucked behind,
Relative homes, isolation kind.
A tiny change, a cleaner view—
The rabbit smiles and hops anew.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main changes: replacing CSS background images with Next.js Image components for optimization in Sections 3, 4, and 5. However, it includes an emoji (⚡) which adds noise rather than clarity.

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

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch jules-13019546950952754637-b4ffb071
📝 Coding Plan
  • Generate coding plan for human review comments

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

❤️ Share

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

@qodo-code-review
Copy link

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: test

Failed stage: Unit Tests [❌]

Failed test name: tests/hooks.test.ts

Failure summary:

  • The GitHub Action failed during npm run test:coverage when Jest attempted to run/transform
    TypeScript/TSX files and threw TypeError: minimatch is not a function.
  • This error originates from test-exclude (used by Jest’s coverage instrumentation) calling minimatch
    as a function, but the installed minimatch module is being resolved to a non-callable export
    (commonly caused by an incompatible minimatch major version / ESM-vs-CJS export mismatch or
    dependency resolution conflict).
  • As a result, Jest could not execute multiple test suites (they error on import/transform) and also
    failed to collect coverage from many source files.
  • First reported failures include:
    - __tests__/hooks.test.ts failing while loading
    hooks/useSpeakers.ts
    - __tests__/lib/shared/jsonld.test.ts failing while loading
    lib/shared/jsonld.ts
    - __tests__/editions.test.ts failing while loading config/editions/index.ts
Relevant error logs:
1:  ##[group]Runner Image Provisioner
2:  Hosted Compute Agent
...

164:  > husky
165:  added 1168 packages, and audited 1169 packages in 26s
166:  266 packages are looking for funding
167:  run `npm fund` for details
168:  1 high severity vulnerability
169:  To address all issues, run:
170:  npm audit fix
171:  Run `npm audit` for details.
172:  ##[group]Run npm run test:coverage
173:  �[36;1mnpm run test:coverage�[0m
174:  shell: /usr/bin/bash -e {0}
175:  ##[endgroup]
176:  > devbcn@1.0.0 test:coverage
177:  > jest --coverage --coverageReporters=text --coverageReporters=lcov
178:  FAIL __tests__/hooks.test.ts
179:  ● Test suite failed to run
180:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/hooks/useSpeakers.ts: minimatch is not a function
181:  �[0m �[90m  6 |�[39m
...

195:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
196:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
197:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
198:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
199:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
200:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
201:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
202:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
203:  at transformFile.next (<anonymous>)
204:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
205:  at run.next (<anonymous>)
206:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
207:  at transform.next (<anonymous>)
208:  at evaluateSync (node_modules/gensync/index.js:251:28)
209:  at sync (node_modules/gensync/index.js:89:14)
210:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
211:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
212:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
213:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
214:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
215:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
216:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
217:  at Object.<anonymous> (__tests__/hooks.test.ts:8:22)
218:  FAIL __tests__/lib/shared/jsonld.test.ts
219:  ● Test suite failed to run
220:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/lib/shared/jsonld.ts: minimatch is not a function
221:  �[0m �[90m  6 |�[39m �[90m *�[39m
...

235:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
236:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
237:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
238:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
239:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
240:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
241:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
242:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
243:  at transformFile.next (<anonymous>)
244:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
245:  at run.next (<anonymous>)
246:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
247:  at transform.next (<anonymous>)
248:  at evaluateSync (node_modules/gensync/index.js:251:28)
249:  at sync (node_modules/gensync/index.js:89:14)
250:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
251:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
252:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
253:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
254:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
255:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
256:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
257:  at Object.<anonymous> (__tests__/lib/shared/jsonld.test.ts:8:17)
258:  FAIL __tests__/editions.test.ts
259:  ● Test suite failed to run
260:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/config/editions/index.ts: minimatch is not a function
261:  �[0m �[90m  6 |�[39m   �[33mCURRENT_EDITION�[39m�[33m,�[39m
...

275:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
276:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
277:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
278:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
279:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
280:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
281:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
282:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
283:  at transformFile.next (<anonymous>)
284:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
285:  at run.next (<anonymous>)
286:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
287:  at transform.next (<anonymous>)
288:  at evaluateSync (node_modules/gensync/index.js:251:28)
289:  at sync (node_modules/gensync/index.js:89:14)
290:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
291:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
292:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
293:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
294:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
295:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
296:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
297:  at Object.<anonymous> (__tests__/editions.test.ts:8:19)
298:  FAIL __tests__/talks-utils.test.ts
299:  ● Test suite failed to run
300:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/hooks/useTalks.ts: minimatch is not a function
301:  �[0m �[90m  6 |�[39m
...

315:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
316:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
317:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
318:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
319:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
320:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
321:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
322:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
323:  at transformFile.next (<anonymous>)
324:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
325:  at run.next (<anonymous>)
326:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
327:  at transform.next (<anonymous>)
328:  at evaluateSync (node_modules/gensync/index.js:251:28)
329:  at sync (node_modules/gensync/index.js:89:14)
330:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
331:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
332:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
333:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
334:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
335:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
336:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
337:  at Object.<anonymous> (__tests__/talks-utils.test.ts:8:19)
338:  FAIL __tests__/lib/shared/markdown.test.tsx
339:  ● Test suite failed to run
340:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/lib/shared/markdown.tsx: minimatch is not a function
341:  �[0m �[90m  7 |�[39m describe(�[32m"Markdown"�[39m�[33m,�[39m () �[33m=>�[39m {
...

355:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
356:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
357:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
358:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
359:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
360:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
361:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
362:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
363:  at transformFile.next (<anonymous>)
364:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
365:  at run.next (<anonymous>)
366:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
367:  at transform.next (<anonymous>)
368:  at evaluateSync (node_modules/gensync/index.js:251:28)
369:  at sync (node_modules/gensync/index.js:89:14)
370:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
371:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
372:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
373:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
374:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
375:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
376:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
377:  at Object.<anonymous> (__tests__/lib/shared/markdown.test.tsx:9:19)
378:  FAIL __tests__/config/navigation.test.ts
379:  ● Test suite failed to run
380:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/config/navigation/index.ts: minimatch is not a function
381:  �[0m �[90m  6 |�[39m �[90m */�[39m
...

395:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
396:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
397:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
398:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
399:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
400:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
401:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
402:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
403:  at transformFile.next (<anonymous>)
404:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
405:  at run.next (<anonymous>)
406:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
407:  at transform.next (<anonymous>)
408:  at evaluateSync (node_modules/gensync/index.js:251:28)
409:  at sync (node_modules/gensync/index.js:89:14)
410:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
411:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
412:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
413:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
414:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
415:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
416:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
417:  at Object.<anonymous> (__tests__/config/navigation.test.ts:8:21)
418:  FAIL __tests__/tag-page.test.tsx
419:  ● TagPage › TagPage component › renders talks with matching matching tag
420:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/tags/[tag]/page.tsx: minimatch is not a function
421:  �[0m �[90m 83 |�[39m     it(�[32m"renders talks with matching matching tag"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

435:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
436:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
437:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
438:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
439:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
440:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
441:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
442:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
443:  at transformFile.next (<anonymous>)
444:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
445:  at run.next (<anonymous>)
446:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
447:  at transform.next (<anonymous>)
448:  at evaluateSync (node_modules/gensync/index.js:251:28)
449:  at sync (node_modules/gensync/index.js:89:14)
450:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
451:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
452:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
453:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
454:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
455:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
456:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
457:  at __tests__/tag-page.test.tsx:85:30
458:  at Object.<anonymous> (__tests__/tag-page.test.tsx:85:24)
459:  ● TagPage › TagPage component › renders notFound when no talks match
460:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/tags/[tag]/page.tsx: minimatch is not a function
461:  �[0m �[90m 103 |�[39m     it(�[32m"renders notFound when no talks match"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

475:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
476:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
477:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
478:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
479:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
480:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
481:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
482:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
483:  at transformFile.next (<anonymous>)
484:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
485:  at run.next (<anonymous>)
486:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
487:  at transform.next (<anonymous>)
488:  at evaluateSync (node_modules/gensync/index.js:251:28)
489:  at sync (node_modules/gensync/index.js:89:14)
490:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
491:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
492:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
493:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
494:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
495:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
496:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
497:  at __tests__/tag-page.test.tsx:105:30
498:  at Object.<anonymous> (__tests__/tag-page.test.tsx:105:24)
499:  ● TagPage › generateMetadata › returns correct metadata
500:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/tags/[tag]/page.tsx: minimatch is not a function
501:  �[0m �[90m 117 |�[39m   describe(�[32m"generateMetadata"�[39m�[33m,�[39m () �[33m=>�[39m {
...

515:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
516:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
517:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
518:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
519:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
520:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
521:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
522:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
523:  at transformFile.next (<anonymous>)
524:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
525:  at run.next (<anonymous>)
526:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
527:  at transform.next (<anonymous>)
528:  at evaluateSync (node_modules/gensync/index.js:251:28)
529:  at sync (node_modules/gensync/index.js:89:14)
530:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
531:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
532:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
533:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
534:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
535:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
536:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
537:  at __tests__/tag-page.test.tsx:119:42
538:  at Object.<anonymous> (__tests__/tag-page.test.tsx:119:36)
539:  ● TagPage › generateStaticParams › returns static params for all tags across years
540:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/tags/[tag]/page.tsx: minimatch is not a function
541:  �[0m �[90m 127 |�[39m     it(�[32m"returns static params for all tags across years"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

555:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
556:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
557:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
558:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
559:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
560:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
561:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
562:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
563:  at transformFile.next (<anonymous>)
564:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
565:  at run.next (<anonymous>)
566:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
567:  at transform.next (<anonymous>)
568:  at evaluateSync (node_modules/gensync/index.js:251:28)
569:  at sync (node_modules/gensync/index.js:89:14)
570:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
571:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
572:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
573:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
574:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
575:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
576:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
577:  at __tests__/tag-page.test.tsx:129:46
578:  at Object.<anonymous> (__tests__/tag-page.test.tsx:129:40)
579:  FAIL __tests__/pages/talk-detail.test.tsx
580:  ● Talk Detail Page › renders talk details correctly
581:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/talks/[talkId]/page.tsx: minimatch is not a function
582:  �[0m �[90m 100 |�[39m     �[36mconst�[39m { getTalkByYearAndId�[33m,�[39m getTalkSpeakersWithDetails�[33m,�[39m getTrackFromTalk�[33m,�[39m getLevelFromTalk�[33m,�[39m getRandomRelatedTalksByTrack } �[33m=�[39m
...

596:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
597:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
598:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
599:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
600:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
601:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
602:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
603:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
604:  at transformFile.next (<anonymous>)
605:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
606:  at run.next (<anonymous>)
607:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
608:  at transform.next (<anonymous>)
609:  at evaluateSync (node_modules/gensync/index.js:251:28)
610:  at sync (node_modules/gensync/index.js:89:14)
611:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
612:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
613:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
614:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
615:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
616:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
617:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
618:  at __tests__/pages/talk-detail.test.tsx:102:25
619:  at Object.<anonymous> (__tests__/pages/talk-detail.test.tsx:102:19)
620:  ● Talk Detail Page › renders notFound if talk is not found
621:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/talks/[talkId]/page.tsx: minimatch is not a function
622:  �[0m �[90m 116 |�[39m   it(�[32m"renders notFound if talk is not found"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

636:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
637:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
638:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
639:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
640:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
641:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
642:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
643:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
644:  at transformFile.next (<anonymous>)
645:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
646:  at run.next (<anonymous>)
647:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
648:  at transform.next (<anonymous>)
649:  at evaluateSync (node_modules/gensync/index.js:251:28)
650:  at sync (node_modules/gensync/index.js:89:14)
651:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
652:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
653:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
654:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
655:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
656:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
657:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
658:  at __tests__/pages/talk-detail.test.tsx:118:25
659:  at Object.<anonymous> (__tests__/pages/talk-detail.test.tsx:118:19)
660:  ● Talk Detail Page › generates correct metadata
661:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/talks/[talkId]/page.tsx: minimatch is not a function
662:  �[0m �[90m 127 |�[39m   it(�[32m"generates correct metadata"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

676:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
677:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
678:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
679:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
680:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
681:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
682:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
683:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
684:  at transformFile.next (<anonymous>)
685:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
686:  at run.next (<anonymous>)
687:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
688:  at transform.next (<anonymous>)
689:  at evaluateSync (node_modules/gensync/index.js:251:28)
690:  at sync (node_modules/gensync/index.js:89:14)
691:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
692:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
693:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
694:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
695:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
696:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
697:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
698:  at __tests__/pages/talk-detail.test.tsx:129:40
699:  at Object.<anonymous> (__tests__/pages/talk-detail.test.tsx:129:34)
700:  FAIL __tests__/pages/year-index.test.tsx
701:  ● Year Index Page › renders all sections with correct props
702:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/page.tsx: minimatch is not a function
703:  �[0m �[90m  99 |�[39m
...

717:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
718:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
719:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
720:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
721:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
722:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
723:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
724:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
725:  at transformFile.next (<anonymous>)
726:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
727:  at run.next (<anonymous>)
728:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
729:  at transform.next (<anonymous>)
730:  at evaluateSync (node_modules/gensync/index.js:251:28)
731:  at sync (node_modules/gensync/index.js:89:14)
732:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
733:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
734:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
735:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
736:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
737:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
738:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
739:  at __tests__/pages/year-index.test.tsx:101:25
740:  at Object.<anonymous> (__tests__/pages/year-index.test.tsx:101:19)
741:  ● Year Index Page › generates correct metadata
742:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/page.tsx: minimatch is not a function
743:  �[0m �[90m 112 |�[39m
...

757:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
758:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
759:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
760:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
761:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
762:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
763:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
764:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
765:  at transformFile.next (<anonymous>)
766:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
767:  at run.next (<anonymous>)
768:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
769:  at transform.next (<anonymous>)
770:  at evaluateSync (node_modules/gensync/index.js:251:28)
771:  at sync (node_modules/gensync/index.js:89:14)
772:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
773:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
774:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
775:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
776:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
777:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
778:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
779:  at __tests__/pages/year-index.test.tsx:114:40
780:  at Object.<anonymous> (__tests__/pages/year-index.test.tsx:114:34)
781:  ● Year Index Page › generates static params for available editions
782:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/page.tsx: minimatch is not a function
783:  �[0m �[90m 119 |�[39m
...

797:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
798:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
799:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
800:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
801:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
802:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
803:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
804:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
805:  at transformFile.next (<anonymous>)
806:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
807:  at run.next (<anonymous>)
808:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
809:  at transform.next (<anonymous>)
810:  at evaluateSync (node_modules/gensync/index.js:251:28)
811:  at sync (node_modules/gensync/index.js:89:14)
812:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
813:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
814:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
815:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
816:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
817:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
818:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
819:  at __tests__/pages/year-index.test.tsx:121:44
820:  at Object.<anonymous> (__tests__/pages/year-index.test.tsx:121:38)
821:  FAIL __tests__/components/job-offers/JobOffersAccordion.test.tsx
822:  ● Test suite failed to run
823:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/components/job-offers/JobOffersAccordion.tsx: minimatch is not a function
824:  �[0m �[90m  7 |�[39m
...

838:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
839:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
840:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
841:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
842:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
843:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
844:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
845:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
846:  at transformFile.next (<anonymous>)
847:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
848:  at run.next (<anonymous>)
849:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
850:  at transform.next (<anonymous>)
851:  at evaluateSync (node_modules/gensync/index.js:251:28)
852:  at sync (node_modules/gensync/index.js:89:14)
853:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
854:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
855:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
856:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
857:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
858:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
859:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
860:  at Object.<anonymous> (__tests__/components/job-offers/JobOffersAccordion.test.tsx:9:68)
861:  FAIL __tests__/pages/talks-list.test.tsx
862:  ● Talks List Page › renders talks list when talks are available
863:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/talks/page.tsx: minimatch is not a function
864:  �[0m �[90m 77 |�[39m   it(�[32m"renders talks list when talks are available"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

878:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
879:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
880:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
881:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
882:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
883:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
884:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
885:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
886:  at transformFile.next (<anonymous>)
887:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
888:  at run.next (<anonymous>)
889:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
890:  at transform.next (<anonymous>)
891:  at evaluateSync (node_modules/gensync/index.js:251:28)
892:  at sync (node_modules/gensync/index.js:89:14)
893:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
894:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
895:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
896:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
897:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
898:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
899:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
900:  at __tests__/pages/talks-list.test.tsx:79:25
901:  at Object.<anonymous> (__tests__/pages/talks-list.test.tsx:79:19)
902:  ● Talks List Page › renders coming soon message when no talks are available
903:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/talks/page.tsx: minimatch is not a function
904:  �[0m �[90m 91 |�[39m   it(�[32m"renders coming soon message when no talks are available"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

918:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
919:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
920:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
921:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
922:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
923:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
924:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
925:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
926:  at transformFile.next (<anonymous>)
927:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
928:  at run.next (<anonymous>)
929:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
930:  at transform.next (<anonymous>)
931:  at evaluateSync (node_modules/gensync/index.js:251:28)
932:  at sync (node_modules/gensync/index.js:89:14)
933:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
934:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
935:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
936:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
937:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
938:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
939:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
940:  at __tests__/pages/talks-list.test.tsx:93:25
941:  at Object.<anonymous> (__tests__/pages/talks-list.test.tsx:93:19)
942:  ● Talks List Page › generates correct metadata
943:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/talks/page.tsx: minimatch is not a function
944:  �[0m �[90m 103 |�[39m   it(�[32m"generates correct metadata"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

958:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
959:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
960:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
961:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
962:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
963:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
964:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
965:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
966:  at transformFile.next (<anonymous>)
967:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
968:  at run.next (<anonymous>)
969:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
970:  at transform.next (<anonymous>)
971:  at evaluateSync (node_modules/gensync/index.js:251:28)
972:  at sync (node_modules/gensync/index.js:89:14)
973:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
974:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
975:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
976:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
977:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
978:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
979:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
980:  at __tests__/pages/talks-list.test.tsx:105:40
981:  at Object.<anonymous> (__tests__/pages/talks-list.test.tsx:105:34)
982:  ● Talks List Page › generates static params
983:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/talks/page.tsx: minimatch is not a function
984:  �[0m �[90m 112 |�[39m
...

998:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
999:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
1000:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
1001:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
1002:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
1003:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
1004:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
1005:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
1006:  at transformFile.next (<anonymous>)
1007:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
1008:  at run.next (<anonymous>)
1009:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
1010:  at transform.next (<anonymous>)
1011:  at evaluateSync (node_modules/gensync/index.js:251:28)
1012:  at sync (node_modules/gensync/index.js:89:14)
1013:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
1014:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
1015:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
1016:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
1017:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
1018:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
1019:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
1020:  at __tests__/pages/talks-list.test.tsx:114:44
1021:  at Object.<anonymous> (__tests__/pages/talks-list.test.tsx:114:38)
1022:  FAIL __tests__/lib/shared/talk-filters.test.ts
1023:  ● Test suite failed to run
1024:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/lib/shared/talk-filters.ts: minimatch is not a function
1025:  �[0m �[90m  6 |�[39m
...

1039:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
1040:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
1041:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
1042:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
1043:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
1044:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
1045:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
1046:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
1047:  at transformFile.next (<anonymous>)
1048:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
1049:  at run.next (<anonymous>)
1050:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
1051:  at transform.next (<anonymous>)
1052:  at evaluateSync (node_modules/gensync/index.js:251:28)
1053:  at sync (node_modules/gensync/index.js:89:14)
1054:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
1055:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
1056:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
1057:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
1058:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
1059:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
1060:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
1061:  at Object.<anonymous> (__tests__/lib/shared/talk-filters.test.ts:8:22)
1062:  FAIL __tests__/pages/speaker-detail.test.tsx
1063:  ● Speaker Detail Page › renders speaker details correctly
1064:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/speakers/[speakerId]/page.tsx: minimatch is not a function
1065:  �[0m �[90m 77 |�[39m   it(�[32m"renders speaker details correctly"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

1079:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
1080:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
1081:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
1082:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
1083:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
1084:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
1085:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
1086:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
1087:  at transformFile.next (<anonymous>)
1088:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
1089:  at run.next (<anonymous>)
1090:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
1091:  at transform.next (<anonymous>)
1092:  at evaluateSync (node_modules/gensync/index.js:251:28)
1093:  at sync (node_modules/gensync/index.js:89:14)
1094:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
1095:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
1096:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
1097:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
1098:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
1099:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
1100:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
1101:  at __tests__/pages/speaker-detail.test.tsx:79:25
1102:  at Object.<anonymous> (__tests__/pages/speaker-detail.test.tsx:79:19)
1103:  ● Speaker Detail Page › renders notFound if speaker is not found
1104:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/speakers/[speakerId]/page.tsx: minimatch is not a function
1105:  �[0m �[90m 89 |�[39m   it(�[32m"renders notFound if speaker is not found"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

1119:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
1120:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
1121:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
1122:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
1123:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
1124:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
1125:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
1126:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
1127:  at transformFile.next (<anonymous>)
1128:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
1129:  at run.next (<anonymous>)
1130:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
1131:  at transform.next (<anonymous>)
1132:  at evaluateSync (node_modules/gensync/index.js:251:28)
1133:  at sync (node_modules/gensync/index.js:89:14)
1134:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
1135:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
1136:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
1137:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
1138:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
1139:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
1140:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
1141:  at __tests__/pages/speaker-detail.test.tsx:91:25
1142:  at Object.<anonymous> (__tests__/pages/speaker-detail.test.tsx:91:19)
1143:  ● Speaker Detail Page › generates correct metadata
1144:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/speakers/[speakerId]/page.tsx: minimatch is not a function
1145:  �[0m �[90m 100 |�[39m   it(�[32m"generates correct metadata"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

1159:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
1160:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
1161:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
1162:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
1163:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
1164:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
1165:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
1166:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
1167:  at transformFile.next (<anonymous>)
1168:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
1169:  at run.next (<anonymous>)
1170:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
1171:  at transform.next (<anonymous>)
1172:  at evaluateSync (node_modules/gensync/index.js:251:28)
1173:  at sync (node_modules/gensync/index.js:89:14)
1174:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
1175:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
1176:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
1177:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
1178:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
1179:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
1180:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
1181:  at __tests__/pages/speaker-detail.test.tsx:102:40
1182:  at Object.<anonymous> (__tests__/pages/speaker-detail.test.tsx:102:34)
1183:  FAIL __tests__/pages/speakers-list.test.tsx
1184:  ● Speakers List Page › renders speakers list when speakers are available
1185:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/speakers/page.tsx: minimatch is not a function
1186:  �[0m �[90m 73 |�[39m   it(�[32m"renders speakers list when speakers are available"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

1200:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
1201:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
1202:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
1203:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
1204:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
1205:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
1206:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
1207:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
1208:  at transformFile.next (<anonymous>)
1209:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
1210:  at run.next (<anonymous>)
1211:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
1212:  at transform.next (<anonymous>)
1213:  at evaluateSync (node_modules/gensync/index.js:251:28)
1214:  at sync (node_modules/gensync/index.js:89:14)
1215:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
1216:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
1217:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
1218:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
1219:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
1220:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
1221:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
1222:  at __tests__/pages/speakers-list.test.tsx:75:25
1223:  at Object.<anonymous> (__tests__/pages/speakers-list.test.tsx:75:19)
1224:  ● Speakers List Page › renders coming soon message when no speakers are available
1225:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/speakers/page.tsx: minimatch is not a function
1226:  �[0m �[90m 86 |�[39m   it(�[32m"renders coming soon message when no speakers are available"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

1240:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
1241:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
1242:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
1243:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
1244:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
1245:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
1246:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
1247:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
1248:  at transformFile.next (<anonymous>)
1249:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
1250:  at run.next (<anonymous>)
1251:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
1252:  at transform.next (<anonymous>)
1253:  at evaluateSync (node_modules/gensync/index.js:251:28)
1254:  at sync (node_modules/gensync/index.js:89:14)
1255:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
1256:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
1257:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
1258:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
1259:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
1260:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
1261:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
1262:  at __tests__/pages/speakers-list.test.tsx:88:25
1263:  at Object.<anonymous> (__tests__/pages/speakers-list.test.tsx:88:19)
1264:  ● Speakers List Page › generates correct metadata
1265:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/speakers/page.tsx: minimatch is not a function
1266:  �[0m �[90m  98 |�[39m   it(�[32m"generates correct metadata"�[39m�[33m,�[39m �[36masync�[39m () �[33m=>�[39m {
...

1280:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
1281:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
1282:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
1283:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
1284:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
1285:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
1286:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
1287:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
1288:  at transformFile.next (<anonymous>)
1289:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
1290:  at run.next (<anonymous>)
1291:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
1292:  at transform.next (<anonymous>)
1293:  at evaluateSync (node_modules/gensync/index.js:251:28)
1294:  at sync (node_modules/gensync/index.js:89:14)
1295:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
1296:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
1297:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
1298:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
1299:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
1300:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
1301:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
1302:  at __tests__/pages/speakers-list.test.tsx:100:40
1303:  at Object.<anonymous> (__tests__/pages/speakers-list.test.tsx:100:34)
1304:  ● Speakers List Page › generates static params
1305:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/speakers/page.tsx: minimatch is not a function
1306:  �[0m �[90m 107 |�[39m
...

1320:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
1321:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
1322:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
1323:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:119:19)
1324:  at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:194:19)
1325:  at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
1326:  at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
1327:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:120:15)
1328:  at transformFile.next (<anonymous>)
1329:  at transformFile (node_modules/@babel/core/src/transformation/index.ts:50:12)
1330:  at run.next (<anonymous>)
1331:  at transform (node_modules/@babel/core/src/transform.ts:29:20)
1332:  at transform.next (<anonymous>)
1333:  at evaluateSync (node_modules/gensync/index.js:251:28)
1334:  at sync (node_modules/gensync/index.js:89:14)
1335:  at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
1336:  at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
1337:  at ScriptTransformer._instrumentFile (node_modules/@jest/transform/build/index.js:301:46)
1338:  at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/index.js:376:33)
1339:  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/index.js:431:17)
1340:  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/index.js:519:40)
1341:  at ScriptTransformer.transform (node_modules/@jest/transform/build/index.js:558:19)
1342:  at __tests__/pages/speakers-list.test.tsx:109:44
1343:  at Object.<anonymous> (__tests__/pages/speakers-list.test.tsx:109:38)
1344:  FAIL __tests__/pages/job-offers.test.tsx
1345:  ● Job Offers Page › renders job offers list when companies are available
1346:  TypeError: /home/runner/work/devbcn-nextjs/devbcn-nextjs/app/[year]/job-offers/page.tsx: minimatch is not a function
1347:  �[0m �[90m 47 |�[39m     �[90m// Dynamic import inside the test to ensure it uses the mocks�[39m
...

1361:  at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
1362:  at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
1363:  at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:161:16)
1364:  at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/sr...

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request correctly optimizes background images by replacing CSS background-image with the Next.js <Image> component, which will leverage Next.js's automatic image optimization and improve performance. The implementation is solid. I have one suggestion to abstract the new <Image> component into a reusable component to improve code maintainability, as the same logic is repeated across three different files.

}}
>
{/* ⚡ Bolt: Using Next.js Image instead of CSS background-image to enable automatic image optimization and caching. Impact: Eliminates unoptimized duplicate network requests for this background image */}
<Image src="/assets/img/bg/header-bg20.png" alt="" fill style={{ objectFit: "cover", zIndex: -1 }} />
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

To improve maintainability and reduce code duplication, consider creating a reusable BackgroundImage component. This <Image> tag with identical props is repeated in section3.tsx, section4.tsx, and section5.tsx.

This would encapsulate the background image logic, making future updates easier. For example:

// components/common/BackgroundImage.tsx
import Image from 'next/image';

interface BackgroundImageProps {
  src: string;
  alt?: string;
}

export const BackgroundImage = ({ src, alt = '' }: BackgroundImageProps) => (
  <Image 
    src={src} 
    alt={alt} 
    fill 
    style={{ objectFit: 'cover', zIndex: -1 }} 
  />
);

You could then use it as <BackgroundImage src="/assets/img/bg/header-bg20.png" /> in your section components. This would make the code cleaner and more scalable.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
components/sections/home8/section4.tsx (1)

23-25: Consider extracting a shared background layer component.

The same header-bg20.png + container layering pattern is repeated across multiple sections. A small shared component would reduce style drift and keep future tuning centralized.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@components/sections/home8/section4.tsx` around lines 23 - 25, Extract the
repeated background+layer pattern into a reusable React component (e.g.,
BackgroundLayer) that encapsulates the two Next.js Image elements (the main
background image like "header-bg20.png" and the overlay "layer1" image) along
with their styles/props (fill, objectFit, zIndex, priority/className), then
replace the inline Image pairs in section4's JSX with <BackgroundLayer
src="/assets/img/bg/header-bg20.png" overlay="/assets/img/elements/layer1.png"
... /> (or similar props) so all sections import and use this single component
to centralize styling and avoid drift.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@components/sections/home8/section4.tsx`:
- Line 25: The Image component rendering the decorative background layer (the
JSX element using <Image src="/assets/img/elements/layer1.png"
className="layer1" ... />) is marked with priority, which preloads a non-LCP
asset; remove the priority prop from this decorative/background Image so it uses
default loading (lazy) instead of preloading. Locate the Image element in
section4.tsx (the layer1 image) and delete the priority attribute so the
decorative asset no longer consumes early network bandwidth.

---

Nitpick comments:
In `@components/sections/home8/section4.tsx`:
- Around line 23-25: Extract the repeated background+layer pattern into a
reusable React component (e.g., BackgroundLayer) that encapsulates the two
Next.js Image elements (the main background image like "header-bg20.png" and the
overlay "layer1" image) along with their styles/props (fill, objectFit, zIndex,
priority/className), then replace the inline Image pairs in section4's JSX with
<BackgroundLayer src="/assets/img/bg/header-bg20.png"
overlay="/assets/img/elements/layer1.png" ... /> (or similar props) so all
sections import and use this single component to centralize styling and avoid
drift.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 45775a2e-bf62-4903-b144-1c5796518cf3

📥 Commits

Reviewing files that changed from the base of the PR and between 13f41b3 and 0030234.

📒 Files selected for processing (3)
  • components/sections/home8/section3.tsx
  • components/sections/home8/section4.tsx
  • components/sections/home8/section5.tsx

<Image src="/assets/img/elements/layer1.png" className="layer1" alt="" fill priority />
{/* ⚡ Bolt: Using Next.js Image instead of CSS background-image to enable automatic image optimization and caching. Impact: Eliminates unoptimized duplicate network requests for this background image */}
<Image src="/assets/img/bg/header-bg20.png" alt="" fill style={{ objectFit: "cover", zIndex: -1 }} />
<Image src="/assets/img/elements/layer1.png" className="layer1" alt="" fill priority style={{ zIndex: -1 }} />
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

For Next.js 15 next/image, is priority recommended for decorative/background images that are not expected to be the LCP element?

💡 Result:

No. In Next.js (including v15), priority is intended for the image that will be the page’s Largest Contentful Paint (LCP) element—typically an above-the-fold hero—because it causes the image to be specially prioritized (e.g., preloaded / priority hints) to improve LCP. For decorative/background images that aren’t expected to be LCP, you generally should not set priority; let them load normally (default lazy-loading) to avoid spending early network bandwidth on non-critical imagery. [1], [2]


Remove priority from the decorative layer image.

Line 25 preloads a non-LCP decorative asset with priority, wasting early network bandwidth on non-critical imagery. In Next.js, priority is intended only for the page's Largest Contentful Paint (LCP) element; decorative/background images should load normally with default lazy-loading.

Suggested change
-      <Image src="/assets/img/elements/layer1.png" className="layer1" alt="" fill priority style={{ zIndex: -1 }} />
+      <Image src="/assets/img/elements/layer1.png" className="layer1" alt="" fill style={{ zIndex: -1 }} />
📝 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
<Image src="/assets/img/elements/layer1.png" className="layer1" alt="" fill priority style={{ zIndex: -1 }} />
<Image src="/assets/img/elements/layer1.png" className="layer1" alt="" fill style={{ zIndex: -1 }} />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@components/sections/home8/section4.tsx` at line 25, The Image component
rendering the decorative background layer (the JSX element using <Image
src="/assets/img/elements/layer1.png" className="layer1" ... />) is marked with
priority, which preloads a non-LCP asset; remove the priority prop from this
decorative/background Image so it uses default loading (lazy) instead of
preloading. Locate the Image element in section4.tsx (the layer1 image) and
delete the priority attribute so the decorative asset no longer consumes early
network bandwidth.

Co-authored-by: anyulled <100741+anyulled@users.noreply.github.com>
Co-authored-by: anyulled <100741+anyulled@users.noreply.github.com>
Co-authored-by: anyulled <100741+anyulled@users.noreply.github.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@cypress/e2e/talks-and-speakers-layout.cy.ts`:
- Line 9: The test title is inconsistent with its assertion: the spec uses the
selector ".talks-grouped .track-section .row .col-lg-4" (a 3-column layout at
lg) but the test name still says "2-column grid"; update the Cypress test's
description/title to reflect a 3-column grid (or otherwise match the intended
breakpoint) so the name aligns with the assertion in the test containing
cy.get(".talks-grouped .track-section .row .col-lg-4"). Ensure the new title
clearly references the 3-column (col-lg-4) layout so future triage isn't
confused.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 76006374-7051-4c73-a01e-69c59d33bcc9

📥 Commits

Reviewing files that changed from the base of the PR and between c1067b7 and b6a5b7b.

📒 Files selected for processing (2)
  • cypress/e2e/home/home-editions.cy.ts
  • cypress/e2e/talks-and-speakers-layout.cy.ts

cy.get(".talks-filter-bar .tracks-scroll-container").should("exist");

cy.get(".talks-grouped .track-section .row .col-lg-6").should("have.length.at.least", 2);
cy.get(".talks-grouped .track-section .row .col-lg-4").should("have.length.at.least", 2);
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Test description is now inconsistent with the asserted grid.

Line 9 checks .col-lg-4 (3-column layout at lg), but the test name still says “2-column grid”. Please update the test title to match the new assertion to avoid confusion during triage.

Suggested fix
-  it("Talks page has filters at top and 2-column grid", () => {
+  it("Talks page has filters at top and 3-column grid", () => {
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@cypress/e2e/talks-and-speakers-layout.cy.ts` at line 9, The test title is
inconsistent with its assertion: the spec uses the selector ".talks-grouped
.track-section .row .col-lg-4" (a 3-column layout at lg) but the test name still
says "2-column grid"; update the Cypress test's description/title to reflect a
3-column grid (or otherwise match the intended breakpoint) so the name aligns
with the assertion in the test containing cy.get(".talks-grouped .track-section
.row .col-lg-4"). Ensure the new title clearly references the 3-column
(col-lg-4) layout so future triage isn't confused.

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