diff --git a/extension-ready/popup.js b/extension-ready/popup.js index 5e66a98..c93689d 100644 --- a/extension-ready/popup.js +++ b/extension-ready/popup.js @@ -1041,7 +1041,9 @@ document.addEventListener('DOMContentLoaded', async () => { const li = text.match(/(?:https?:\/\/)?(?:www\.)?linkedin\.com\/in\/[\w-]+\/?/i); const gh = text.match(/(?:https?:\/\/)?(?:www\.)?github\.com\/[\w-]+\/?/i); const tw = text.match(/(?:https?:\/\/)?(?:www\.)?(?:twitter|x)\.com\/[\w-]+\/?/i); - const web = text.match(/\b(?:https?:\/\/|www\.)(?!(?:www\.)?(?:linkedin|github|twitter|x)\.com\b)[\w.-]+\.[a-z]{2,}(?:\/[\w./-]*)?/i); + const web = text.match( + /(? { it('renders the empty collapsed state', () => { expect(popupHtml).toContain('id="stats-summary">No activity yet'); @@ -90,4 +99,17 @@ describe('popup productivity stats UI', () => { expect(contentJs).toContain('labelTextWithoutControls'); expect(contentJs).toContain("field.closest?.('label')"); }); + + it('extracts bare portfolio domains without treating emails as websites', () => { + const extractCvContactUrls = loadExtractCvContactUrls(); + const urls = extractCvContactUrls(`Jane Doe +jane@example.xyz +linkedin.com/in/janedoe +github.com/janedoe +portfolio.xyz/work`); + + expect(urls.linkedin).toBe('https://linkedin.com/in/janedoe'); + expect(urls.github).toBe('https://github.com/janedoe'); + expect(urls.website).toBe('https://portfolio.xyz/work'); + }); });