@backstage-community/plugin-servicenow 1.12.0 → 1.13.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @backstage-community/plugin-servicenow
2
2
 
3
+ ## 1.13.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 6622075: Updated dependency `@playwright/test` to `1.61.1`.
8
+
9
+ ## 1.13.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 2603949: Backstage version bump to v1.51.0
14
+ - 2e296d0: Backstage version bump to v1.52.0
15
+
16
+ ### Patch Changes
17
+
18
+ - fc0ec09: Migrate ServiceNow frontend plugin from Material UI v4 to Material UI v5, replacing `makeStyles` with `sx` props and removing `@material-ui/*` imports.
19
+ - Updated dependencies [2603949]
20
+ - Updated dependencies [2e296d0]
21
+ - @backstage-community/plugin-servicenow-common@1.12.0
22
+
3
23
  ## 1.12.0
4
24
 
5
25
  ### Minor Changes
@@ -3,21 +3,17 @@ import OpenInNewIcon from '@mui/icons-material/OpenInNew';
3
3
  import IconButton from '@mui/material/IconButton';
4
4
  import TableCell from '@mui/material/TableCell';
5
5
  import TableRow from '@mui/material/TableRow';
6
- import { makeStyles } from '@mui/styles';
7
6
  import Tooltip from '@mui/material/Tooltip';
8
7
  import Typography from '@mui/material/Typography';
9
8
  import { convertDateFormat } from '../../utils/stringUtils.esm.js';
10
9
  import { usePriorityMap, useIncidentStateMap, renderStatusLabel } from '../../utils/incidentUtils.esm.js';
11
10
  import { useTranslation } from '../../hooks/useTranslation.esm.js';
12
11
 
13
- const useStyles = makeStyles(() => ({
14
- tableCellStyle: {
15
- lineHeight: "1.5rem",
16
- fontSize: "0.875rem"
17
- }
18
- }));
12
+ const tableCellSx = {
13
+ lineHeight: "1.5rem",
14
+ fontSize: "0.875rem"
15
+ };
19
16
  const IncidentsTableRow = ({ data }) => {
20
- const classes = useStyles();
21
17
  const { t } = useTranslation();
22
18
  const priorityMap = usePriorityMap();
23
19
  const incidentStateMap = useIncidentStateMap();
@@ -31,12 +27,12 @@ const IncidentsTableRow = ({ data }) => {
31
27
  borderBottom: "1px solid #e0e0e0"
32
28
  },
33
29
  children: [
34
- /* @__PURE__ */ jsx(TableCell, { component: "th", scope: "row", className: classes.tableCellStyle, children: data.number }),
35
- /* @__PURE__ */ jsx(TableCell, { align: "left", className: classes.tableCellStyle, children: /* @__PURE__ */ jsx(Tooltip, { title: data?.description, arrow: true, placement: "top", children: /* @__PURE__ */ jsx(
30
+ /* @__PURE__ */ jsx(TableCell, { component: "th", scope: "row", sx: tableCellSx, children: data.number }),
31
+ /* @__PURE__ */ jsx(TableCell, { align: "left", sx: tableCellSx, children: /* @__PURE__ */ jsx(Tooltip, { title: data?.description, arrow: true, placement: "top", children: /* @__PURE__ */ jsx(
36
32
  Typography,
37
33
  {
38
34
  variant: "body1",
39
- style: {
35
+ sx: {
40
36
  maxWidth: 208,
41
37
  whiteSpace: "nowrap",
42
38
  overflow: "hidden",
@@ -45,10 +41,17 @@ const IncidentsTableRow = ({ data }) => {
45
41
  children: data?.shortDescription
46
42
  }
47
43
  ) }) }),
48
- /* @__PURE__ */ jsx(TableCell, { align: "left", className: classes.tableCellStyle, children: convertDateFormat(data?.sysCreatedOn) }),
49
- /* @__PURE__ */ jsx(TableCell, { align: "left", className: classes.tableCellStyle, children: renderStatusLabel(priorityMap[data?.priority]) }),
50
- /* @__PURE__ */ jsx(TableCell, { align: "left", className: classes.tableCellStyle, children: renderStatusLabel(incidentStateMap[data?.incidentState]) }),
51
- /* @__PURE__ */ jsx(TableCell, { align: "left", className: classes.tableCellStyle, children: /* @__PURE__ */ jsx(Tooltip, { title: t("actions.openInServicenow"), arrow: true, placement: "top", children: /* @__PURE__ */ jsx(IconButton, { onClick: () => window.open(data.url, "_blank"), children: /* @__PURE__ */ jsx(OpenInNewIcon, { fontSize: "small", style: { color: "inherit" } }) }) }) })
44
+ /* @__PURE__ */ jsx(TableCell, { align: "left", sx: tableCellSx, children: convertDateFormat(data?.sysCreatedOn) }),
45
+ /* @__PURE__ */ jsx(TableCell, { align: "left", sx: tableCellSx, children: renderStatusLabel(priorityMap[data?.priority]) }),
46
+ /* @__PURE__ */ jsx(TableCell, { align: "left", sx: tableCellSx, children: renderStatusLabel(incidentStateMap[data?.incidentState]) }),
47
+ /* @__PURE__ */ jsx(TableCell, { align: "left", sx: tableCellSx, children: /* @__PURE__ */ jsx(Tooltip, { title: t("actions.openInServicenow"), arrow: true, placement: "top", children: /* @__PURE__ */ jsx(
48
+ IconButton,
49
+ {
50
+ "aria-label": t("actions.openInServicenow"),
51
+ onClick: () => window.open(data.url, "_blank"),
52
+ children: /* @__PURE__ */ jsx(OpenInNewIcon, { fontSize: "small", sx: { color: "inherit" } })
53
+ }
54
+ ) }) })
52
55
  ]
53
56
  }
54
57
  );
@@ -1 +1 @@
1
- {"version":3,"file":"IncidentsTableRow.esm.js","sources":["../../../src/components/Servicenow/IncidentsTableRow.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew';\nimport IconButton from '@mui/material/IconButton';\nimport TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\nimport { makeStyles } from '@mui/styles';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\n\nimport { convertDateFormat } from '../../utils/stringUtils';\nimport {\n renderStatusLabel,\n usePriorityMap,\n useIncidentStateMap,\n} from '../../utils/incidentUtils';\nimport type { IncidentsData } from '../../types';\nimport { useTranslation } from '../../hooks/useTranslation';\n\nconst useStyles = makeStyles(() => ({\n tableCellStyle: {\n lineHeight: '1.5rem',\n fontSize: '0.875rem',\n },\n}));\n\nexport const IncidentsTableRow = ({ data }: { data: IncidentsData }) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const priorityMap = usePriorityMap();\n const incidentStateMap = useIncidentStateMap();\n\n return (\n <TableRow\n hover\n sx={{\n fontSize: '0.875rem',\n '&:last-child td, &:last-child th': { border: 0 },\n borderBottom: '1px solid #e0e0e0',\n }}\n >\n <TableCell component=\"th\" scope=\"row\" className={classes.tableCellStyle}>\n {data.number}\n </TableCell>\n <TableCell align=\"left\" className={classes.tableCellStyle}>\n <Tooltip title={data?.description} arrow placement=\"top\">\n <Typography\n variant=\"body1\"\n style={{\n maxWidth: 208,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {data?.shortDescription}\n </Typography>\n </Tooltip>\n </TableCell>\n <TableCell align=\"left\" className={classes.tableCellStyle}>\n {convertDateFormat(data?.sysCreatedOn)}\n </TableCell>\n <TableCell align=\"left\" className={classes.tableCellStyle}>\n {renderStatusLabel(priorityMap[data?.priority])}\n </TableCell>\n\n <TableCell align=\"left\" className={classes.tableCellStyle}>\n {renderStatusLabel(incidentStateMap[data?.incidentState])}\n </TableCell>\n <TableCell align=\"left\" className={classes.tableCellStyle}>\n <Tooltip title={t('actions.openInServicenow')} arrow placement=\"top\">\n <IconButton onClick={() => window.open(data.url, '_blank')}>\n <OpenInNewIcon fontSize=\"small\" style={{ color: 'inherit' }} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;AAiCA,MAAM,SAAA,GAAY,WAAW,OAAO;AAAA,EAClC,cAAA,EAAgB;AAAA,IACd,UAAA,EAAY,QAAA;AAAA,IACZ,QAAA,EAAU;AAAA;AAEd,CAAA,CAAE,CAAA;AAEK,MAAM,iBAAA,GAAoB,CAAC,EAAE,IAAA,EAAK,KAA+B;AACtE,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,mBAAmB,mBAAA,EAAoB;AAE7C,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAK,IAAA;AAAA,MACL,EAAA,EAAI;AAAA,QACF,QAAA,EAAU,UAAA;AAAA,QACV,kCAAA,EAAoC,EAAE,MAAA,EAAQ,CAAA,EAAE;AAAA,QAChD,YAAA,EAAc;AAAA,OAChB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,WAAU,IAAA,EAAK,KAAA,EAAM,OAAM,SAAA,EAAW,OAAA,CAAQ,cAAA,EACtD,QAAA,EAAA,IAAA,CAAK,MAAA,EACR,CAAA;AAAA,wBACA,GAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAM,MAAA,EAAO,WAAW,OAAA,CAAQ,cAAA,EACzC,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,OAAO,IAAA,EAAM,WAAA,EAAa,KAAA,EAAK,IAAA,EAAC,WAAU,KAAA,EACjD,QAAA,kBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,OAAA;AAAA,YACR,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,GAAA;AAAA,cACV,UAAA,EAAY,QAAA;AAAA,cACZ,QAAA,EAAU,QAAA;AAAA,cACV,YAAA,EAAc;AAAA,aAChB;AAAA,YAEC,QAAA,EAAA,IAAA,EAAM;AAAA;AAAA,WAEX,CAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAM,MAAA,EAAO,SAAA,EAAW,QAAQ,cAAA,EACxC,QAAA,EAAA,iBAAA,CAAkB,IAAA,EAAM,YAAY,CAAA,EACvC,CAAA;AAAA,wBACA,GAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAM,MAAA,EAAO,SAAA,EAAW,OAAA,CAAQ,cAAA,EACxC,QAAA,EAAA,iBAAA,CAAkB,WAAA,CAAY,IAAA,EAAM,QAAQ,CAAC,CAAA,EAChD,CAAA;AAAA,wBAEA,GAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAM,MAAA,EAAO,SAAA,EAAW,OAAA,CAAQ,cAAA,EACxC,QAAA,EAAA,iBAAA,CAAkB,gBAAA,CAAiB,IAAA,EAAM,aAAa,CAAC,CAAA,EAC1D,CAAA;AAAA,4BACC,SAAA,EAAA,EAAU,KAAA,EAAM,MAAA,EAAO,SAAA,EAAW,QAAQ,cAAA,EACzC,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,EAAE,0BAA0B,CAAA,EAAG,OAAK,IAAA,EAAC,SAAA,EAAU,OAC7D,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAS,MAAM,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,QAAQ,GACvD,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,QAAA,EAAS,OAAA,EAAQ,OAAO,EAAE,KAAA,EAAO,WAAU,EAAG,CAAA,EAC/D,GACF,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"IncidentsTableRow.esm.js","sources":["../../../src/components/Servicenow/IncidentsTableRow.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew';\nimport IconButton from '@mui/material/IconButton';\nimport TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\n\nimport { convertDateFormat } from '../../utils/stringUtils';\nimport {\n renderStatusLabel,\n usePriorityMap,\n useIncidentStateMap,\n} from '../../utils/incidentUtils';\nimport type { IncidentsData } from '../../types';\nimport { useTranslation } from '../../hooks/useTranslation';\n\nconst tableCellSx = {\n lineHeight: '1.5rem',\n fontSize: '0.875rem',\n};\n\nexport const IncidentsTableRow = ({ data }: { data: IncidentsData }) => {\n const { t } = useTranslation();\n const priorityMap = usePriorityMap();\n const incidentStateMap = useIncidentStateMap();\n\n return (\n <TableRow\n hover\n sx={{\n fontSize: '0.875rem',\n '&:last-child td, &:last-child th': { border: 0 },\n borderBottom: '1px solid #e0e0e0',\n }}\n >\n <TableCell component=\"th\" scope=\"row\" sx={tableCellSx}>\n {data.number}\n </TableCell>\n <TableCell align=\"left\" sx={tableCellSx}>\n <Tooltip title={data?.description} arrow placement=\"top\">\n <Typography\n variant=\"body1\"\n sx={{\n maxWidth: 208,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {data?.shortDescription}\n </Typography>\n </Tooltip>\n </TableCell>\n <TableCell align=\"left\" sx={tableCellSx}>\n {convertDateFormat(data?.sysCreatedOn)}\n </TableCell>\n <TableCell align=\"left\" sx={tableCellSx}>\n {renderStatusLabel(priorityMap[data?.priority])}\n </TableCell>\n\n <TableCell align=\"left\" sx={tableCellSx}>\n {renderStatusLabel(incidentStateMap[data?.incidentState])}\n </TableCell>\n <TableCell align=\"left\" sx={tableCellSx}>\n <Tooltip title={t('actions.openInServicenow')} arrow placement=\"top\">\n <IconButton\n aria-label={t('actions.openInServicenow')}\n onClick={() => window.open(data.url, '_blank')}\n >\n <OpenInNewIcon fontSize=\"small\" sx={{ color: 'inherit' }} />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAgCA,MAAM,WAAA,GAAc;AAAA,EAClB,UAAA,EAAY,QAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA;AAEO,MAAM,iBAAA,GAAoB,CAAC,EAAE,IAAA,EAAK,KAA+B;AACtE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,mBAAmB,mBAAA,EAAoB;AAE7C,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAK,IAAA;AAAA,MACL,EAAA,EAAI;AAAA,QACF,QAAA,EAAU,UAAA;AAAA,QACV,kCAAA,EAAoC,EAAE,MAAA,EAAQ,CAAA,EAAE;AAAA,QAChD,YAAA,EAAc;AAAA,OAChB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,WAAU,IAAA,EAAK,KAAA,EAAM,OAAM,EAAA,EAAI,WAAA,EACvC,eAAK,MAAA,EACR,CAAA;AAAA,wBACA,GAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAM,MAAA,EAAO,IAAI,WAAA,EAC1B,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,WAAA,EAAa,KAAA,EAAK,IAAA,EAAC,WAAU,KAAA,EACjD,QAAA,kBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,OAAA;AAAA,YACR,EAAA,EAAI;AAAA,cACF,QAAA,EAAU,GAAA;AAAA,cACV,UAAA,EAAY,QAAA;AAAA,cACZ,QAAA,EAAU,QAAA;AAAA,cACV,YAAA,EAAc;AAAA,aAChB;AAAA,YAEC,QAAA,EAAA,IAAA,EAAM;AAAA;AAAA,WAEX,CAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,aAAU,KAAA,EAAM,MAAA,EAAO,IAAI,WAAA,EACzB,QAAA,EAAA,iBAAA,CAAkB,IAAA,EAAM,YAAY,CAAA,EACvC,CAAA;AAAA,wBACA,GAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAM,MAAA,EAAO,EAAA,EAAI,WAAA,EACzB,QAAA,EAAA,iBAAA,CAAkB,WAAA,CAAY,IAAA,EAAM,QAAQ,CAAC,CAAA,EAChD,CAAA;AAAA,wBAEA,GAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAM,MAAA,EAAO,EAAA,EAAI,WAAA,EACzB,QAAA,EAAA,iBAAA,CAAkB,gBAAA,CAAiB,IAAA,EAAM,aAAa,CAAC,CAAA,EAC1D,CAAA;AAAA,wBACA,GAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAM,MAAA,EAAO,IAAI,WAAA,EAC1B,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,EAAE,0BAA0B,CAAA,EAAG,KAAA,EAAK,IAAA,EAAC,WAAU,KAAA,EAC7D,QAAA,kBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAY,EAAE,0BAA0B,CAAA;AAAA,YACxC,SAAS,MAAM,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,KAAK,QAAQ,CAAA;AAAA,YAE7C,QAAA,kBAAA,GAAA,CAAC,iBAAc,QAAA,EAAS,OAAA,EAAQ,IAAI,EAAE,KAAA,EAAO,WAAU,EAAG;AAAA;AAAA,WAE9D,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage-community/plugin-servicenow",
3
- "version": "1.12.0",
3
+ "version": "1.13.1",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index.esm.js",
6
6
  "types": "./dist/index.d.ts",
@@ -59,18 +59,17 @@
59
59
  "postpack": "backstage-cli package postpack"
60
60
  },
61
61
  "dependencies": {
62
- "@backstage-community/plugin-servicenow-common": "^1.11.0",
63
- "@backstage/catalog-model": "^1.8.0",
64
- "@backstage/core-compat-api": "^0.5.10",
65
- "@backstage/core-components": "^0.18.9",
66
- "@backstage/core-plugin-api": "^1.12.5",
67
- "@backstage/frontend-plugin-api": "^0.16.2",
68
- "@backstage/plugin-catalog-react": "^2.1.4",
62
+ "@backstage-community/plugin-servicenow-common": "^1.12.0",
63
+ "@backstage/catalog-model": "^1.9.0",
64
+ "@backstage/core-compat-api": "^0.5.12",
65
+ "@backstage/core-components": "^0.18.11",
66
+ "@backstage/core-plugin-api": "^1.12.7",
67
+ "@backstage/frontend-plugin-api": "^0.17.2",
68
+ "@backstage/plugin-catalog-react": "^3.1.0",
69
69
  "@backstage/theme": "^0.7.3",
70
70
  "@mui/icons-material": "^5.15.17",
71
71
  "@mui/lab": "^5.0.0-alpha.153",
72
72
  "@mui/material": "^5.17.1",
73
- "@mui/styles": "5.18.0",
74
73
  "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
75
74
  "react-router-dom": "^6.0.0",
76
75
  "react-use": "^17.2.4"
@@ -82,13 +81,12 @@
82
81
  },
83
82
  "devDependencies": {
84
83
  "@axe-core/playwright": "^4.11.0",
85
- "@backstage/cli": "^0.36.1",
86
- "@backstage/core-app-api": "^1.20.0",
87
- "@backstage/dev-utils": "^1.1.22",
88
- "@backstage/frontend-test-utils": "^0.5.2",
89
- "@backstage/test-utils": "^1.7.17",
90
- "@material-ui/core": "^4.12.4",
91
- "@playwright/test": "^1.57.0",
84
+ "@backstage/cli": "^0.36.3",
85
+ "@backstage/core-app-api": "^1.20.2",
86
+ "@backstage/dev-utils": "^1.1.24",
87
+ "@backstage/frontend-test-utils": "^0.6.1",
88
+ "@backstage/test-utils": "^1.7.19",
89
+ "@playwright/test": "1.61.1",
92
90
  "@testing-library/dom": "^10.4.1",
93
91
  "@testing-library/jest-dom": "^6.0.0",
94
92
  "@testing-library/react": "^16.0.0",