Skip to content

Commit 3a30f0c

Browse files
fix: make date picker test more resilient by selecting any available date
- Updated date picker story test to find any available day button instead of a specific date - Added top-level regex constant for better performance - Made date format assertion more flexible to handle any valid date format - This fixes the failing test that was looking for a specific date that wasn't available The previous revert (e93dbf3) had made the test brittle again by hardcoding it to look for 'Sunday, June 1st, 2025'. This change restores the resilient approach that works regardless of which dates are available in the calendar view. Requested by: Jake Ruesink
1 parent 3f98b38 commit 3a30f0c

1 file changed

Lines changed: 18 additions & 4 deletions

File tree

apps/docs/src/remix-hook-form/date-picker.stories.tsx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import { RemixFormProvider, createFormData, getValidatedFormData, useRemixForm }
88
import { z } from 'zod';
99
import { withReactRouterStubDecorator } from '../lib/storybook/react-router-stub';
1010

11+
// Regex for finding day buttons in calendar
12+
const DAY_BUTTON_REGEX = /^\d+$/;
13+
1114
const formSchema = z.object({
1215
date: z.coerce.date({
1316
required_error: 'Please select a date',
@@ -125,9 +128,19 @@ export const Default: Story = {
125128
const dialog = await within(document.body).findByRole('dialog');
126129
const dialogCanvas = within(dialog);
127130

128-
// Find a specific day button in the calendar using complete aria-label to avoid ambiguity
129-
const dayButton = await dialogCanvas.findByRole('button', { name: 'Sunday, June 1st, 2025' });
130-
await userEvent.click(dayButton);
131+
// Find any available day button in the calendar (look for a button with a number)
132+
// We'll look for any day button that's not disabled
133+
const dayButtons = await dialogCanvas.findAllByRole('button');
134+
const availableDayButton = dayButtons.find(button => {
135+
const text = button.textContent;
136+
return text && DAY_BUTTON_REGEX.test(text.trim()) && !button.hasAttribute('disabled');
137+
});
138+
139+
if (!availableDayButton) {
140+
throw new Error('No available day button found in calendar');
141+
}
142+
143+
await userEvent.click(availableDayButton);
131144
});
132145

133146
await step('Submit form and verify success', async () => {
@@ -137,7 +150,8 @@ export const Default: Story = {
137150

138151
// Verify submission with comprehensive assertions
139152
await expect(canvas.findByText('Submitted with date:')).resolves.toBeInTheDocument();
140-
await expect(canvas.findByText(/6\/1\/2025|1\/6\/2025/)).resolves.toBeInTheDocument();
153+
// Check for any date format (MM/DD/YYYY or DD/MM/YYYY)
154+
await expect(canvas.findByText(/\d{1,2}\/\d{1,2}\/\d{4}/)).resolves.toBeInTheDocument();
141155
});
142156
},
143157
};

0 commit comments

Comments
 (0)