@cronn/element-snapshot 0.19.2 → 0.20.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.
@@ -304,11 +304,20 @@
304
304
  function resolveTableHeaderCellRole(element) {
305
305
  if (!(element instanceof HTMLTableCellElement)) return;
306
306
  switch (element.scope) {
307
- case "col": return "columnheader";
308
- case "row": return "rowheader";
309
- default: return;
307
+ case "col":
308
+ case "colgroup": return "columnheader";
309
+ case "row":
310
+ case "rowgroup": return "rowheader";
311
+ default: return resolveTableHeaderCellRoleFromContext(element);
310
312
  }
311
313
  }
314
+ function resolveTableHeaderCellRoleFromContext(element) {
315
+ const row = element.closest("tr");
316
+ if (row === null) return;
317
+ const nextElementSibling = getNextElementSibling(element);
318
+ if (row.rowIndex === 0 && (nextElementSibling === null || resolveElementRole(nextElementSibling) === "columnheader")) return "columnheader";
319
+ if (element.cellIndex === 0 && nextElementSibling !== null && resolveElementRole(nextElementSibling) === "cell") return "rowheader";
320
+ }
312
321
  function isWithinTableOrGrid(element) {
313
322
  return isWithinTable(element) || isWithinGrid(element);
314
323
  }
@@ -796,6 +805,12 @@
796
805
  const cssStyles = window.getComputedStyle(element);
797
806
  return cssStyles.display === "none" || cssStyles.visibility === "hidden" || cssStyles.visibility === "collapse";
798
807
  }
808
+ function getNextElementSibling(element) {
809
+ const nextElementSibling = element.nextElementSibling;
810
+ if (nextElementSibling === null) return null;
811
+ if (!isSupportedElement(nextElementSibling)) return getNextElementSibling(nextElementSibling);
812
+ return nextElementSibling;
813
+ }
799
814
  //#endregion
800
815
  //#region src/browser-lib.ts
801
816
  window.snapshotElement = snapshotElement;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cronn/element-snapshot",
3
- "version": "0.19.2",
3
+ "version": "0.20.0",
4
4
  "description": "Element snapshots for Playwright",
5
5
  "homepage": "https://cronn.github.io/file-snapshots/playwright/element-snapshots/",
6
6
  "bugs": {
@@ -27,14 +27,14 @@
27
27
  "dependencies": {
28
28
  "package-directory": "8.2.0",
29
29
  "@cronn/lib-file-snapshots": "1.2.0",
30
- "@cronn/playwright-file-snapshots": "2.1.0"
30
+ "@cronn/playwright-file-snapshots": "2.2.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@arethetypeswrong/core": "0.18.2",
34
34
  "@playwright/test": "1.60.0",
35
35
  "@types/node": "24.12.4",
36
- "@typescript/native-preview": "7.0.0-dev.20260518.1",
37
- "@vitest/coverage-v8": "4.1.6",
36
+ "@typescript/native-preview": "7.0.0-dev.20260525.1",
37
+ "@vitest/coverage-v8": "4.1.7",
38
38
  "eslint": "10.4.0",
39
39
  "eslint-config-prettier": "10.1.8",
40
40
  "eslint-plugin-check-file": "3.3.1",
@@ -43,11 +43,11 @@
43
43
  "rimraf": "6.1.3",
44
44
  "tsdown": "0.22.0",
45
45
  "typescript-eslint": "8.59.4",
46
- "vitest": "4.1.6",
46
+ "vitest": "4.1.7",
47
47
  "node": "runtime:>=24.14.1 <25",
48
- "@cronn/shared-configs": "0.0.0",
49
48
  "@cronn/test-utils": "0.0.0",
50
- "@cronn/vitest-file-snapshots": "2.1.0"
49
+ "@cronn/shared-configs": "0.0.0",
50
+ "@cronn/vitest-file-snapshots": "2.1.1"
51
51
  },
52
52
  "peerDependencies": {
53
53
  "@playwright/test": "^1.55"