@multiplatform.one/test-utils 7.28.1 → 7.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/test-utils",
3
- "version": "7.28.1",
3
+ "version": "7.29.0",
4
4
  "description": "Shared testing utilities for multiplatform.one packages",
5
5
  "keywords": [
6
6
  "multiplatform.one",
package/src/index.tsx CHANGED
@@ -351,6 +351,32 @@ export async function waitForElement(
351
351
  throw new Error("Element not found within timeout");
352
352
  }
353
353
 
354
+ /**
355
+ * Give jsdom, which has no `<dialog>.show()`, the one Chromium and WebKit
356
+ * ship: mark the dialog open and focus its first focusable descendant,
357
+ * `tabindex="-1"` included. Firefox and the HTML spec take the first tab stop
358
+ * instead, so a dialog whose first focusable is a frame opens on different
359
+ * elements per browser (MPO-470). Returns the restore; call it in `afterEach`.
360
+ */
361
+ export function modelFirstFocusableShow(): () => void {
362
+ const proto = HTMLDialogElement.prototype as { show?: (this: HTMLDialogElement) => void };
363
+ const original = Object.getOwnPropertyDescriptor(proto, "show");
364
+ proto.show = function show(this: HTMLDialogElement) {
365
+ this.setAttribute("open", "");
366
+ const first = Array.from(this.querySelectorAll<HTMLElement>("*")).find(
367
+ (el) =>
368
+ el.hasAttribute("tabindex") ||
369
+ (el.matches("input, button, select, textarea, a[href]") &&
370
+ !(el as HTMLInputElement).disabled),
371
+ );
372
+ first?.focus();
373
+ };
374
+ return () => {
375
+ if (original) Object.defineProperty(proto, "show", original);
376
+ else delete proto.show;
377
+ };
378
+ }
379
+
354
380
  // ─── Fixture Factories ───────────────────────────────────────────────────────
355
381
 
356
382
  /**
package/types/index.d.ts CHANGED
@@ -74,6 +74,14 @@ export declare function renderWithProviders(ui: ReactElement, options?: RenderWi
74
74
  export declare function findTextInContainer(container: HTMLElement, text: string): HTMLElement | null;
75
75
  /** Wait for an element to appear within a timeout */
76
76
  export declare function waitForElement(getFn: () => HTMLElement | null, timeout?: number): Promise<HTMLElement>;
77
+ /**
78
+ * Give jsdom, which has no `<dialog>.show()`, the one Chromium and WebKit
79
+ * ship: mark the dialog open and focus its first focusable descendant,
80
+ * `tabindex="-1"` included. Firefox and the HTML spec take the first tab stop
81
+ * instead, so a dialog whose first focusable is a frame opens on different
82
+ * elements per browser (MPO-470). Returns the restore; call it in `afterEach`.
83
+ */
84
+ export declare function modelFirstFocusableShow(): () => void;
77
85
  /**
78
86
  * Generate a test fixture for a Frappe doctype with auto-generated name
79
87
  * and sensible defaults. Override any field via the overrides parameter.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}