var test = require('node:test'); var assert = require('node:assert/strict'); var path = require('node:path'); var fs = require('node:fs'); var vm = require('node:vm'); function load() { return import('file://' + path.join(__dirname, '../lib/public/modules/clay-browser-links.js')); } test('browser pills accept explicit web destinations and preserve port, query and fragment', async function () { var links = await load(); assert.equal(links.browserLinkTarget('browser:http://localhost:3000/preview?tab=one#section'), 'http://localhost:3000/preview?tab=one#section'); ['https://example.test/', 'browser:javascript:alert(1)', 'browser:file:///tmp/test', 'browser:data:text/html,x', 'browser:https://user:pass@example.test/', 'browser:https://example.test/\n', 'browser://example.test', 'browser:https://'].forEach(function (value) { assert.equal(links.browserLinkTarget(value), null, value); }); }); test('browser pills render compact accessible buttons and escape URL and label attributes', async function () { var links = await load(); var html = links.renderBrowserLink('browser:https://example.test/?q=%22&x=1', '', 'Preview "page" '); assert.match(html, /class="clay-browser-link clayos-record-link"/); assert.match(html, /data-lucide="globe"/); assert.match(html, /aria-label="Open in Clay Browser:/); assert.match(html, /Preview "page"/); assert.match(html, /&x=1/); assert.equal(html.includes('