diff --git a/frontend/__tests__/unit/components/AnchorTitle.test.tsx b/frontend/__tests__/unit/components/AnchorTitle.test.tsx index c328495d12..f0a6f3abcc 100644 --- a/frontend/__tests__/unit/components/AnchorTitle.test.tsx +++ b/frontend/__tests__/unit/components/AnchorTitle.test.tsx @@ -11,9 +11,9 @@ jest.mock('utils/slugify', () => ({ default: jest.fn((str: string) => str .toLowerCase() - .replace(/[^a-z0-9]/g, '-') - .replace(/-{2,10}/g, '-') - .replace(/(^-{1,10}|-{1,10}$)/g, '') + .replaceAll(/[^a-z0-9]/g, '-') + .replaceAll(/-{2,10}/g, '-') + .replaceAll(/(^-{1,10}|-{1,10}$)/g, '') ), })) @@ -652,9 +652,9 @@ describe('AnchorTitle Component', () => { mockFn.mockImplementation((str: string) => str .toLowerCase() - .replace(/[^a-z0-9]/g, '-') - .replace(/-{2,10}/g, '-') - .replace(/(^-{1,10}|-{1,10}$)/g, '') + .replaceAll(/[^a-z0-9]/g, '-') + .replaceAll(/-{2,10}/g, '-') + .replaceAll(/(^-{1,10}|-{1,10}$)/g, '') ) const mockScrollTo = jest.spyOn(globalThis, 'scrollTo').mockImplementation() diff --git a/frontend/__tests__/unit/components/MarkdownWrapper.test.tsx b/frontend/__tests__/unit/components/MarkdownWrapper.test.tsx index 263e081b2c..83d3579c7e 100644 --- a/frontend/__tests__/unit/components/MarkdownWrapper.test.tsx +++ b/frontend/__tests__/unit/components/MarkdownWrapper.test.tsx @@ -11,8 +11,8 @@ jest.mock('markdown-it/index.mjs', () => { render: (content: string) => { // Very simple mock: replace **bold** and [link](url) return content - .replace(/\*\*(.*?)\*\*/g, '$1') - .replace(/\[(.*?)\]\((.*?)\)/g, '$1') + .replaceAll(/\*\*(.*?)\*\*/g, '$1') + .replaceAll(/\[(.*?)\]\((.*?)\)/g, '$1') }, use: jest.fn().mockReturnThis(), })) diff --git a/frontend/__tests__/unit/pages/UserDetails.test.tsx b/frontend/__tests__/unit/pages/UserDetails.test.tsx index 50e985f44d..a4458e01d8 100644 --- a/frontend/__tests__/unit/pages/UserDetails.test.tsx +++ b/frontend/__tests__/unit/pages/UserDetails.test.tsx @@ -41,7 +41,7 @@ jest.mock('components/Badges', () => { showTooltip?: boolean }) => (
diff --git a/frontend/src/app/board/[year]/candidates/page.tsx b/frontend/src/app/board/[year]/candidates/page.tsx index 2ffd58922f..b4d9dd8a59 100644 --- a/frontend/src/app/board/[year]/candidates/page.tsx +++ b/frontend/src/app/board/[year]/candidates/page.tsx @@ -189,7 +189,7 @@ const BoardCandidatesPage = () => { const handleCardClick = () => { // Convert name to slug format. - const nameSlug = candidate.memberName.toLowerCase().replace(/\s+/g, '_') + const nameSlug = candidate.memberName.toLowerCase().replaceAll(/\s+/g, '_') const candidateUrl = `https://owasp.org/www-board-candidates/${year}/${nameSlug}.html` window.open(candidateUrl, '_blank', 'noopener,noreferrer') } @@ -295,7 +295,7 @@ const BoardCandidatesPage = () => { } className="text-gray-700 dark:text-gray-300" > - {candidate.member.bio.replace(/\n+/g, ' ').replace(/\s+/g, ' ').trim()} + {candidate.member.bio.replaceAll(/\n+/g, ' ').replaceAll(/\s+/g, ' ').trim()}
)} diff --git a/frontend/src/components/Badges.tsx b/frontend/src/components/Badges.tsx index d6c3151392..1af558aa8a 100644 --- a/frontend/src/components/Badges.tsx +++ b/frontend/src/components/Badges.tsx @@ -16,7 +16,7 @@ const normalizeCssClass = (cssClass: string | undefined) => { } // Convert backend snake_case format to frontend camelCase format - return cssClass.trim().replace(/_([a-z])/g, (_, letter) => letter.toUpperCase()) + return cssClass.trim().replaceAll(/_([a-z])/g, (_, letter) => letter.toUpperCase()) } const resolveIcon = (cssClass: string | undefined) => { diff --git a/frontend/src/components/BreadCrumbs.tsx b/frontend/src/components/BreadCrumbs.tsx index 1777f3dc39..83a319a8a8 100644 --- a/frontend/src/components/BreadCrumbs.tsx +++ b/frontend/src/components/BreadCrumbs.tsx @@ -43,7 +43,7 @@ export default function BreadCrumbs() { {segments.map((segment, index) => { const href = homeRoute + segments.slice(0, index + 1).join(homeRoute) - const label = upperFirst(segment).replace(/-/g, ' ') + const label = upperFirst(segment).replaceAll('-', ' ') const isLast = index === segments.length - 1 return ( diff --git a/frontend/src/utils/slugify.ts b/frontend/src/utils/slugify.ts index 06aa3800af..7ad05140dd 100644 --- a/frontend/src/utils/slugify.ts +++ b/frontend/src/utils/slugify.ts @@ -1,8 +1,8 @@ export default function slugify(text: string): string { return text .normalize('NFKD') // Normalize accented characters - .replace(/[\u0300-\u036F]/g, '') // Remove diacritics - .replace(/[^a-zA-Z0-9]+/g, '-') // Replace non-alphanumeric with hyphens + .replaceAll(/[\u0300-\u036F]/g, '') // Remove diacritics + .replaceAll(/[^a-zA-Z0-9]+/g, '-') // Replace non-alphanumeric with hyphens .replace(/^[-]+/, '') // Trim leading hyphens .replace(/[-]+$/, '') // Trim trailing hyphens .toLowerCase()