/* eslint-disable */ const bot = require('@jesses/circle-github-bot').default.create(); const Mercury = require('../dist/mercury.js'); const fs = require('fs'); const execSync = require('child_process').execSync; const { getReport } = require('@postlight/ci-failed-test-reporter'); const run = () => { const screenshotPath = process.argv[2]; const fixture = screenshotPath.split('tmp/artifacts/')[1].slice(0, -4); const html = fs.readFileSync(`${fixture}`); // first parse is just to get the url Mercury.parse('http://example.com', { html, fallback: false }).then( ({ url, domain, excerpt, word_count, direction }) => { // with the url, second pass will test the correct parser Mercury.parse(url, { html, fallback: false }).then(json => { // removing excerpt b/c this comes from content, not necessary delete json.excerpt; // adding items that aren't pulled in custom parser w/out fallback Object.assign(json, { url, domain, word_count, direction }); // a quick preview of the parsed content in an html file const previewHtml = `

${json.title}

${json.author}

${json.content}`; const jsonPath = `${screenshotPath}-parsed.json`; const fixtureArtifactPath = `tmp/artifacts/${fixture}`; const previewPath = `tmp/artifacts/${fixture}.preview.html`; fs.writeFileSync(previewPath, previewHtml); fs.writeFileSync(jsonPath, JSON.stringify(json)); fs.writeFileSync(fixtureArtifactPath, html); const testReport = getReport('./test-output.json') || '✅ All tests passed'; const comment = `### 🤖 Automated Parsing Preview 🤖 **Commit:** \`${bot.env.commitMessage}\` ![Screenshot of fixture (this embed should work after repo is public)](${bot.artifactUrl( screenshotPath )}) [Original Article](${url}) | ${bot.artifactLink( fixtureArtifactPath, 'HTML Fixture' )} | ${bot.artifactLink(previewPath, 'Parsed Content Preview')}
Parsed JSON \`\`\`json ${JSON.stringify(json, null, 2)} \`\`\`

**\`null\` fields** ${Object.keys(json) .map(key => (json[key] !== null ? '' : ` * \`${key}\n\``)) .join('\n\n') || 'None'} ${testReport} `; const commentPath = 'tmp/artifacts/comment.json'; fs.writeFileSync( commentPath, JSON.stringify({ body: comment, issue: process.env.CIRCLE_PULL_REQUEST, }) ); }); } ); }; run();