Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions __tests__/components/layout/DynamicHeaderWrapper.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,17 @@ import { fireEvent, render, screen } from "@testing-library/react";
import React from "react";
import type { EditionNavigation } from "@/config/editions/types";

beforeAll(() => {
jest.spyOn(window, "requestAnimationFrame").mockImplementation((cb) => {
cb(0);
return 0;
});
});

afterAll(() => {
(window.requestAnimationFrame as jest.Mock).mockRestore();
});
Comment on lines +6 to +15
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The mock for requestAnimationFrame should return a numeric ID to allow testing of the cancellation logic. The current implementation returns undefined, which causes the if (state.frameId) check in the component's cleanup effect to always be false, leaving the cancelAnimationFrame call untested. This suggestion updates the mock to return a dummy ID and also mocks cancelAnimationFrame for completeness.

beforeAll(() => {
  jest.spyOn(window, "requestAnimationFrame").mockImplementation((cb) => {
    cb(0);
    return 1;
  });
  jest.spyOn(window, "cancelAnimationFrame").mockImplementation(() => {});
});

afterAll(() => {
  (window.requestAnimationFrame as jest.Mock).mockRestore();
  (window.cancelAnimationFrame as jest.Mock).mockRestore();
});

Comment on lines +6 to +15
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

What is the browser window.requestAnimationFrame signature, including its return type and callback argument, and is the callback invoked asynchronously?

💡 Result:

The browser window.requestAnimationFrame method has the signature requestAnimationFrame(callback), where callback is a function that receives a single argument: a DOMHighResTimeStamp (a double representing milliseconds since the time origin, with sub-millisecond precision). It returns an unsigned long (request ID) used to identify the callback for cancellation via cancelAnimationFrame. The callback is invoked asynchronously, before the browser's next repaint (typically at the display's refresh rate, e.g., 60Hz), during the "update the rendering" steps of the event loop processing model. It is not a microtask or macrotask but a special animation frame callback executed after microtasks and before rendering.

Citations:


Make the requestAnimationFrame mock behave like the real API.

The mock invokes the callback synchronously and returns void, whereas the browser API:

  • Invokes the callback asynchronously (after microtasks, before rendering)
  • Passes the callback a DOMHighResTimeStamp (milliseconds since time origin)
  • Returns an unsigned long frame ID for later cancellation

This mismatch can hide timing and ordering bugs in the throttling logic that would manifest in real browser behavior.

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

In `@__tests__/components/layout/DynamicHeaderWrapper.test.tsx` around lines 6 -
12, The requestAnimationFrame mock currently calls the callback synchronously
and returns void; replace it with a realistic mock inside beforeAll that (1)
returns a numeric frame id, (2) calls the callback asynchronously (e.g. via
setTimeout 0 or Promise microtask) with a DOMHighResTimeStamp from
performance.now(), and (3) supports cancellation by mocking
window.cancelAnimationFrame to clear the scheduled callback (track timeouts/ids
in a Map and increment a frameId counter). Keep the existing afterAll restore
logic but ensure you also restore any mocked cancelAnimationFrame and the
requestAnimationFrame spy (use the same jest.spyOn(window,
"requestAnimationFrame") and jest.spyOn(window, "cancelAnimationFrame") hooks
referenced in beforeAll/afterAll).


jest.mock("@/components/layout/header/Header8", () => ({
__esModule: true,
default: ({ scroll, isSearch, handleSearch }: { scroll: boolean; isSearch: boolean; handleSearch: () => void }) => (
Expand Down
11 changes: 11 additions & 0 deletions __tests__/components/layout/Layout.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@ import { beforeEach, describe, expect, it, jest } from "@jest/globals";
import { fireEvent, render, screen } from "@testing-library/react";
import React from "react";

beforeAll(() => {
jest.spyOn(window, "requestAnimationFrame").mockImplementation((cb) => {
cb(0);
return 0;
});
});

afterAll(() => {
(window.requestAnimationFrame as jest.Mock).mockRestore();
});
Comment on lines +5 to +14
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The mock for requestAnimationFrame should return a numeric ID to allow testing of the cancellation logic. The current implementation returns undefined, which causes the if (state.frameId) check in the component's cleanup effect to always be false, leaving the cancelAnimationFrame call untested. This suggestion updates the mock to return a dummy ID and also mocks cancelAnimationFrame for completeness.

beforeAll(() => {
  jest.spyOn(window, "requestAnimationFrame").mockImplementation((cb) => {
    cb(0);
    return 1;
  });
  jest.spyOn(window, "cancelAnimationFrame").mockImplementation(() => {});
});

afterAll(() => {
  (window.requestAnimationFrame as jest.Mock).mockRestore();
  (window.cancelAnimationFrame as jest.Mock).mockRestore();
});

Comment on lines +5 to +14
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

What is the browser window.requestAnimationFrame signature, including its return type and callback argument, and is the callback invoked asynchronously?

💡 Result:

The browser window.requestAnimationFrame method has the signature requestAnimationFrame(callback), where callback is a function that receives a single argument: a DOMHighResTimeStamp (a double representing milliseconds since the time origin, with at least 1ms precision, similar to performance.now and equal to document.timeline.currentTime for Window contexts). It returns an unsigned long (or long) integer request ID, which uniquely identifies the callback entry and can be passed to window.cancelAnimationFrame to cancel it. The ID is typically a per-window incrementing counter but do not make assumptions about its exact value (it may overflow). The callback is invoked asynchronously, before the browser's next repaint (synchronized to the display's refresh rate, e.g., ~60Hz), typically as part of the rendering pipeline after layout but before paint. It is queued and executed asynchronously relative to the call to requestAnimationFrame, paused in background tabs, and one-shot (must be called again in the callback for continuous animation).

Citations:


Use a browser-compatible requestAnimationFrame mock that matches the DOM API contract.

The callback must receive a DOMHighResTimeStamp argument (millisecond precision), and the mock must return an unsigned long request ID. The current mock calls the callback synchronously with mockImplementation((cb) => cb()) without a timestamp and returns undefined, which doesn't exercise the asynchronous scheduling behavior the component actually relies on. This allows tests to pass while validating different timing semantics than the browser provides.

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

In `@__tests__/components/layout/Layout.test.tsx` around lines 5 - 11, The
requestAnimationFrame mock used in the beforeAll/afterAll block must emulate the
DOM contract: change the jest.spyOn(window, "requestAnimationFrame")
mockImplementation so it calls the callback asynchronously with a
DOMHighResTimeStamp (e.g. performance.now()) and returns an unsigned long-like
request id (a numeric id from setTimeout or incrementer), and ensure afterAll
still restores the spy; update the mock to schedule the callback
(setTimeout/queueMicrotask) so timing semantics are exercised and the returned
value is a numeric request id that can be used to cancel if needed.


const aosInit = jest.fn();

const createHeaderMock = (id: number) => {
Expand Down
12 changes: 6 additions & 6 deletions __tests__/snapshots/layout/__snapshots__/Footer8.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ exports[`Footer8 Component matches snapshot 1`] = `
decoding="async"
loading="lazy"
sizes="100vw"
src="/_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=3840&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=640&q=75 640w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=750&q=75 750w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=828&q=75 828w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=1080&q=75 1080w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=1200&q=75 1200w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=1920&q=75 1920w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=2048&q=75 2048w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=3840&q=75 3840w"
src="/_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=3840&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=640&q=85 640w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=750&q=85 750w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=828&q=85 828w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=1080&q=85 1080w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=1200&q=85 1200w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=1920&q=85 1920w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=2048&q=85 2048w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg21.png&w=3840&q=85 3840w"
style="position: absolute; height: 100%; width: 100%; left: 0px; top: 0px; right: 0px; bottom: 0px; object-fit: cover; color: transparent; z-index: -3;"
/>
<img
Expand All @@ -22,8 +22,8 @@ exports[`Footer8 Component matches snapshot 1`] = `
decoding="async"
height="230"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Felements%2Flayer1.png&w=3840&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Felements%2Flayer1.png&w=1920&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Felements%2Flayer1.png&w=3840&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Felements%2Flayer1.png&w=3840&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Felements%2Flayer1.png&w=1920&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Felements%2Flayer1.png&w=3840&q=85 2x"
style="color: transparent;"
width="1440"
/>
Expand All @@ -45,8 +45,8 @@ exports[`Footer8 Component matches snapshot 1`] = `
decoding="async"
height="76"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Flogo%2FdevBcn.webp&w=384&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Flogo%2FdevBcn.webp&w=256&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Flogo%2FdevBcn.webp&w=384&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Flogo%2FdevBcn.webp&w=384&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Flogo%2FdevBcn.webp&w=256&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Flogo%2FdevBcn.webp&w=384&q=85 2x"
style="color: transparent;"
width="150"
/>
Expand Down
88 changes: 44 additions & 44 deletions __tests__/snapshots/layout/__snapshots__/Header1.test.tsx.snap

Large diffs are not rendered by default.

44 changes: 22 additions & 22 deletions __tests__/snapshots/layout/__snapshots__/Header2.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ exports[`Header2 Component matches snapshot 1`] = `
decoding="async"
height="40"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Flogo%2Flogo2.png&w=384&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Flogo%2Flogo2.png&w=256&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Flogo%2Flogo2.png&w=384&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Flogo%2Flogo2.png&w=384&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Flogo%2Flogo2.png&w=256&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Flogo%2Flogo2.png&w=384&q=85 2x"
style="color: transparent; width: auto; height: auto;"
width="150"
/>
Expand Down Expand Up @@ -130,8 +130,8 @@ exports[`Header2 Component matches snapshot 1`] = `
decoding="async"
height="300"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img1.png&w=640&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img1.png&w=384&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img1.png&w=640&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img1.png&w=640&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img1.png&w=384&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img1.png&w=640&q=85 2x"
style="color: transparent; width: 100%; height: auto;"
width="300"
/>
Expand Down Expand Up @@ -179,8 +179,8 @@ exports[`Header2 Component matches snapshot 1`] = `
decoding="async"
height="300"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img2.png&w=640&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img2.png&w=384&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img2.png&w=640&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img2.png&w=640&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img2.png&w=384&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img2.png&w=640&q=85 2x"
style="color: transparent; width: 100%; height: auto;"
width="300"
/>
Expand Down Expand Up @@ -228,8 +228,8 @@ exports[`Header2 Component matches snapshot 1`] = `
decoding="async"
height="300"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img3.png&w=640&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img3.png&w=384&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img3.png&w=640&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img3.png&w=640&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img3.png&w=384&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img3.png&w=640&q=85 2x"
style="color: transparent; width: 100%; height: auto;"
width="300"
/>
Expand Down Expand Up @@ -277,8 +277,8 @@ exports[`Header2 Component matches snapshot 1`] = `
decoding="async"
height="300"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img4.png&w=640&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img4.png&w=384&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img4.png&w=640&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img4.png&w=640&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img4.png&w=384&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img4.png&w=640&q=85 2x"
style="color: transparent; width: 100%; height: auto;"
width="300"
/>
Expand Down Expand Up @@ -327,8 +327,8 @@ exports[`Header2 Component matches snapshot 1`] = `
decoding="async"
height="300"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img5.png&w=640&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img5.png&w=384&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img5.png&w=640&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img5.png&w=640&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img5.png&w=384&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img5.png&w=640&q=85 2x"
style="color: transparent; width: 100%; height: auto;"
width="300"
/>
Expand Down Expand Up @@ -380,8 +380,8 @@ exports[`Header2 Component matches snapshot 1`] = `
decoding="async"
height="300"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img6.png&w=640&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img6.png&w=384&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img6.png&w=640&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img6.png&w=640&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img6.png&w=384&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img6.png&w=640&q=85 2x"
style="color: transparent; width: 100%; height: auto;"
width="300"
/>
Expand Down Expand Up @@ -429,8 +429,8 @@ exports[`Header2 Component matches snapshot 1`] = `
decoding="async"
height="300"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img7.png&w=640&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img7.png&w=384&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img7.png&w=640&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img7.png&w=640&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img7.png&w=384&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img7.png&w=640&q=85 2x"
style="color: transparent; width: 100%; height: auto;"
width="300"
/>
Expand Down Expand Up @@ -478,8 +478,8 @@ exports[`Header2 Component matches snapshot 1`] = `
decoding="async"
height="300"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img8.png&w=640&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img8.png&w=384&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img8.png&w=640&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img8.png&w=640&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img8.png&w=384&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img8.png&w=640&q=85 2x"
style="color: transparent; width: 100%; height: auto;"
width="300"
/>
Expand Down Expand Up @@ -527,8 +527,8 @@ exports[`Header2 Component matches snapshot 1`] = `
decoding="async"
height="300"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img9.png&w=640&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img9.png&w=384&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img9.png&w=640&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img9.png&w=640&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img9.png&w=384&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img9.png&w=640&q=85 2x"
style="color: transparent; width: 100%; height: auto;"
width="300"
/>
Expand Down Expand Up @@ -577,8 +577,8 @@ exports[`Header2 Component matches snapshot 1`] = `
decoding="async"
height="300"
loading="lazy"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img10.png&w=640&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img10.png&w=384&q=75 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img10.png&w=640&q=75 2x"
src="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img10.png&w=640&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img10.png&w=384&q=85 1x, /_next/image?url=%2Fassets%2Fimg%2Fall-images%2Fdemo%2Fdemo-img10.png&w=640&q=85 2x"
style="color: transparent; width: 100%; height: auto;"
width="300"
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ exports[`PageHeader Component matches snapshot with custom background 1`] = `
data-nimg="fill"
decoding="async"
sizes="100vw"
src="/_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=3840&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=640&q=75 640w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=750&q=75 750w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=828&q=75 828w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=1080&q=75 1080w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=1200&q=75 1200w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=1920&q=75 1920w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=2048&q=75 2048w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=3840&q=75 3840w"
src="/_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=3840&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=640&q=85 640w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=750&q=85 750w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=828&q=85 828w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=1080&q=85 1080w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=1200&q=85 1200w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=1920&q=85 1920w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=2048&q=85 2048w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=3840&q=85 3840w"
style="position: absolute; height: 100%; width: 100%; left: 0px; top: 0px; right: 0px; bottom: 0px; object-fit: cover; color: transparent; z-index: -1;"
/>
<div
Expand Down Expand Up @@ -64,8 +64,8 @@ exports[`PageHeader Component matches snapshot with default props 1`] = `
data-nimg="fill"
decoding="async"
sizes="100vw"
src="/_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=3840&q=75"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=640&q=75 640w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=750&q=75 750w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=828&q=75 828w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=1080&q=75 1080w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=1200&q=75 1200w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=1920&q=75 1920w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=2048&q=75 2048w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=3840&q=75 3840w"
src="/_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=3840&q=85"
srcset="/_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=640&q=85 640w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=750&q=85 750w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=828&q=85 828w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=1080&q=85 1080w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=1200&q=85 1200w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=1920&q=85 1920w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=2048&q=85 2048w, /_next/image?url=%2Fassets%2Fimg%2Fbg%2Fheader-bg6.png&w=3840&q=85 3840w"
style="position: absolute; height: 100%; width: 100%; left: 0px; top: 0px; right: 0px; bottom: 0px; object-fit: cover; color: transparent; z-index: -1;"
/>
<div
Expand Down
Loading
Loading