// tests/providers/weworkremotely.test.mjs — moved verbatim from test-all.mjs (#1440).
import { pass, fail, ROOT } from '../helpers.mjs';
import { join } from 'path';
import { pathToFileURL } from 'url';
console.log('\nProvider — weworkremotely');
try {
const wwrModule = await import(pathToFileURL(join(ROOT, 'providers/weworkremotely.mjs')).href);
const weworkremotely = wwrModule.default;
const { parseWwrFeed } = wwrModule;
if (weworkremotely.id === 'weworkremotely') pass('weworkremotely.id is "weworkremotely"');
else fail(`weworkremotely.id is ${JSON.stringify(weworkremotely.id)}`);
const hit = weworkremotely.detect({ name: 'WWR', provider: 'weworkremotely' });
if (hit && hit.url === 'https://weworkremotely.com/remote-jobs.rss') {
pass('weworkremotely.detect() claims explicit provider config');
} else {
fail(`weworkremotely.detect() returned ${JSON.stringify(hit)}`);
}
if (weworkremotely.detect({ name: 'Remote Board', provider: 'remoteok' }) === null) {
pass('weworkremotely.detect() ignores other provider ids');
} else {
fail('weworkremotely.detect() should only claim provider: weworkremotely');
}
const sample = `
-
https://weworkremotely.com/remote-jobs/acme-staff-ai-engineer
Thu, 13 Nov 2025 14:10:41 +0000
Programming
-
Principal Platform Engineer & Tooling
https://weworkremotely.com/remote-jobs/example-platform-engineer
Fri, 02 Jan 2026 09:00:00 +0000
DevOps and Sysadmin
-
Missing Link Inc: Dropped Role
Fri, 02 Jan 2026 09:00:00 +0000
USA Only
-
Bad Link Inc: Dropped Role
/remote-jobs/bad-link
Europe Only
-
Off Host Inc: Dropped Role
https://example.com/remote-jobs/off-host
Internal
`;
const jobs = parseWwrFeed(sample, 'WWR Board');
if (jobs.length === 2) pass('parseWwrFeed keeps 2 items (drops missing/relative/off-host links)');
else fail(`parseWwrFeed returned ${jobs.length} jobs (expected 2)`);
if (jobs[0]?.company === 'Acme & Co' && jobs[0]?.title === 'Staff AI Engineer') {
pass('parseWwrFeed splits "Company: Role" titles');
} else {
fail(`row 0 title/company = ${JSON.stringify({ title: jobs[0]?.title, company: jobs[0]?.company })}`);
}
if (jobs[0]?.url === 'https://weworkremotely.com/remote-jobs/acme-staff-ai-engineer') {
pass('parseWwrFeed maps to url');
} else {
fail(`row 0 url = ${JSON.stringify(jobs[0]?.url)}`);
}
if (jobs[0]?.location === 'Anywhere in the World') {
pass('parseWwrFeed maps to location');
} else {
fail(`row 0 location = ${JSON.stringify(jobs[0]?.location)}`);
}
if (jobs[0]?.postedAt === Date.parse('Thu, 13 Nov 2025 14:10:41 +0000')) {
pass('parseWwrFeed parses pubDate -> postedAt');
} else {
fail(`row 0 postedAt = ${JSON.stringify(jobs[0]?.postedAt)}`);
}
if (jobs[1]?.company === 'WWR Board' && jobs[1]?.title === 'Principal Platform Engineer & Tooling') {
pass('parseWwrFeed falls back to entry name and decodes entities');
} else {
fail(`row 1 = ${JSON.stringify(jobs[1])}`);
}
if (jobs[1]?.location === 'DevOps and Sysadmin') {
pass('parseWwrFeed falls back to when is absent');
} else {
fail(`row 1 location = ${JSON.stringify(jobs[1]?.location)}`);
}
if (parseWwrFeed('', 'X').length === 0 && parseWwrFeed(null, 'X').length === 0) {
pass('parseWwrFeed empty / non-string feed -> empty result (no crash)');
} else {
fail('parseWwrFeed empty / non-string feed should yield empty result');
}
let capturedUrl = null;
let capturedOpts = null;
const fetched = await weworkremotely.fetch(
{ name: 'WWR Board', provider: 'weworkremotely' },
{ fetchText: async (url, opts) => { capturedUrl = url; capturedOpts = opts; return sample; } },
);
if (capturedUrl === 'https://weworkremotely.com/remote-jobs.rss') {
pass('weworkremotely.fetch() requests the pinned RSS feed URL');
} else {
fail(`weworkremotely.fetch() requested ${JSON.stringify(capturedUrl)}`);
}
if (capturedOpts && capturedOpts.redirect === 'error') {
pass('weworkremotely.fetch() passes redirect:"error" to fetchText');
} else {
fail(`weworkremotely.fetch() should pass redirect:"error", got: ${JSON.stringify(capturedOpts)}`);
}
if (fetched[0]?.company === 'Acme & Co' && fetched[0]?.title === 'Staff AI Engineer') {
pass('provider: weworkremotely config returns normalized jobs');
} else {
fail(`weworkremotely.fetch() normalized row = ${JSON.stringify(fetched[0])}`);
}
} catch (e) {
fail(`weworkremotely provider tests crashed: ${e.message}`);
}