diff --git a/.changeset/warm-ladybugs-admire.md b/.changeset/warm-ladybugs-admire.md
new file mode 100644
index 00000000..81ceb14b
--- /dev/null
+++ b/.changeset/warm-ladybugs-admire.md
@@ -0,0 +1,5 @@
+---
+"@ladle/react": patch
+---
+
+Fix instanceof implementation for mocked Dates
diff --git a/e2e/decorators/src/mock-date.stories.tsx b/e2e/decorators/src/mock-date.stories.tsx
index 334ae2b8..2b0af271 100644
--- a/e2e/decorators/src/mock-date.stories.tsx
+++ b/e2e/decorators/src/mock-date.stories.tsx
@@ -31,3 +31,21 @@ export const Inactive: Story = () => {
);
};
+
+export const Instanceof: Story = () => {
+ const mockDate = new Date();
+ const realDate = new Date(1234);
+
+ return (
+
+ - mockDate instanceof Date:
+ - {mockDate instanceof Date ? "yes" : "no"}
+ - realDate instanceof Date:
+ - {realDate instanceof Date ? "yes" : "no"}
+
+ );
+};
+
+Instanceof.meta = {
+ mockDate: "1995-12-17T03:24:00",
+};
diff --git a/e2e/decorators/tests/mock-date.spec.ts b/e2e/decorators/tests/mock-date.spec.ts
index 9c091997..6ea705b1 100644
--- a/e2e/decorators/tests/mock-date.spec.ts
+++ b/e2e/decorators/tests/mock-date.spec.ts
@@ -25,3 +25,10 @@ test("the date is current", async ({ page }) => {
}),
);
});
+
+test("MockDate works with instanceof", async ({ page }) => {
+ await page.goto("/?story=mock-date--instanceof");
+
+ await expect(page.locator('[data-testid="mockDate"]')).toHaveText("yes");
+ await expect(page.locator('[data-testid="realDate"]')).toHaveText("yes");
+});
diff --git a/e2e/decorators/tests/params.spec.ts b/e2e/decorators/tests/params.spec.ts
index e335645b..4f8fa52e 100644
--- a/e2e/decorators/tests/params.spec.ts
+++ b/e2e/decorators/tests/params.spec.ts
@@ -69,6 +69,17 @@ test("meta.json is correctly using defaults and overrides", async ({
name: "Inactive",
namedExport: "Inactive",
},
+ "mock-date--instanceof": {
+ filePath: "src/mock-date.stories.tsx",
+ levels: ["Mock date"],
+ locEnd: 47,
+ locStart: 35,
+ meta: {
+ mockDate: "1995-12-17T03:24:00",
+ },
+ name: "Instanceof",
+ namedExport: "Instanceof",
+ },
"root--examples--first": {
filePath: "src/params.stories.tsx",
levels: ["Root", "Examples"],
diff --git a/packages/ladle/lib/app/src/mock-date.ts b/packages/ladle/lib/app/src/mock-date.ts
index 48c3fac5..66656d3b 100644
--- a/packages/ladle/lib/app/src/mock-date.ts
+++ b/packages/ladle/lib/app/src/mock-date.ts
@@ -56,6 +56,10 @@ const MockDate = class Date extends RealDate {
return date;
}
+
+ static [Symbol.hasInstance](instance: unknown): boolean {
+ return instance instanceof RealDate;
+ }
};
MockDate.UTC = RealDate.UTC;