Finalized Hand-Off Testing

Steps to Run Test:

From terminal:

  1. Cd tests
  2. Node claude.test.js
  3. Npm test to run test
  4. Tests % node claude.test.js

Output of Tests:

Tests in code form:

sync function testScraping({url = 'https://doorstep.ai', verbose = false}) {
try {
let data = await scrape(url);
if (!data) {
throw new Error("empty return");
}
verbose && console.log("SCRAPED SUCCESS");
return true
} catch (err) {
verbose && console.error("ERR: testScraping - scraping.test.ts")
verbose && console.error(err);
return false
}
}

async function noHTTPS({url = 'google.com', verbose = false}) {
try {
let data = await scrape(url);
if (data === "") {
verbose && console.log("DETECT NO HTTPS SUCCESS");
return true
} else {
throw new Error("non-empty return");
}
} catch (err) {
verbose && console.error("ERR: noHTTPS - scraping.test.ts")
verbose && console.error(err);
return false
}
}

async function testInvalidURL({url = 'https://non-existent.no', verbose = false}) {
try {
let data = await scrape(url);
if (data === "") {
verbose && console.log("INVALID URL TEST SUCCESS");
return true
} else {
throw new Error("Non-empty return for invalid URL");
}
} catch (err) {
verbose && console.error("ERR: testInvalidURL - scraping.test.ts");
verbose && console.error(err);
return false
}
}

async function testEmptyURL({verbose = false}) {
try {
let data = await scrape('');
if (data === "") {
verbose && console.log("EMPTY URL TEST SUCCESS");
return true
} else {
throw new Error("Non-empty return for empty URL");
}
} catch (err) {
verbose && console.error("ERR: testEmptyURL - scraping.test.ts");
verbose && console.error(err);
return false
}
}

async function completeScrapingTests({verbose = false}) {
const [
testScrapingRes,
noHTTPSRes,
testInvalidURLRes,
testEmptyURLRes
] = await Promise.all([
testScraping({verbose}),
noHTTPS({verbose}),
testInvalidURL({verbose}),
testEmptyURL({verbose})

async function testGetClassification({verbose = false}) {
    try {
        let allowedClassifications: string[] = ["Technology", "Business", "Health", "Science", "Education", "Entertainment", "Sports", "Politics", "Other"]
        let data = await getClassification(summary);
        if (data in allowedClassifications) {
            verbose && console.log(data)
            verbose && console.log("GET CLASSIFICATION SUCCESS");
            summary = data // for use in next test
            return true
        } else {
            throw new Error("empty return");
        }
    } catch (err) {
        verbose && console.error("ERR: testGetSummary - claude.test.ts");
        verbose && console.error(err);
        return false
    }
}

async function completeClaudeTests({verbose = false}) {
    let testGetSummaryRes = await testGetSummary({verbose})
    let testGetClassificationRes = await testGetClassification({verbose})
    return {
        testGetSummaryRes,
        testGetClassificationRes
    }
}
export {
    completeClaudeTests