dx: test/finish bot preview
parent
d35f7bd5bf
commit
ff144952b9
@ -1,28 +1,65 @@
|
||||
/* eslint-disable */
|
||||
const bot = require('circle-github-bot').create();
|
||||
const bot = require('@jesses/circle-github-bot').default.create();
|
||||
const Mercury = require('../dist/mercury.js');
|
||||
const fs = require("fs");
|
||||
|
||||
const run = async () => {
|
||||
const screenshot = process.argv[2];
|
||||
const run = () => {
|
||||
const screenshotPath = process.argv[2];
|
||||
|
||||
const fixture = screenshot.split('tmp/artifacts/')[1].slice(0, -4);
|
||||
const fixture = screenshotPath.split('tmp/artifacts/')[1].slice(0, -4);
|
||||
|
||||
const html = fs.readFileSync(`${fixture}`);
|
||||
const json = await Mercury.parse('http://example.com', html, { fallback: false });
|
||||
|
||||
const jsonPath = `${screenshot}-parsed.json`;
|
||||
const fixtureArtifactPath = "tmp/artifacts/" + 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
|
||||
|
||||
fs.writeFileSync(jsonPath, JSON.stringify(json));
|
||||
fs.writeFileSync(fixtureArtifactPath, html);
|
||||
// adding items that aren't pulled in custom parser w/out fallback
|
||||
Object.assign(json, { url, domain, word_count, direction });
|
||||
|
||||
bot.comment(`
|
||||
<h3>${bot.env.commitMessage}</h3>
|
||||
Page: <strong>${bot.artifactLink(ffixtureArtifactPath, 'Page')}</strong>
|
||||
Screenshot: <strong>${bot.artifactLink(screenshot, 'Screenshot')}</strong>
|
||||
JSON: <strong>${bot.artifactLink(jsonPath, 'JSON')}</strong>
|
||||
`);
|
||||
// a quick preview of the parsed content in an html file
|
||||
const previewHtml = `<h1>${json.title}</h1><p>${json.author}</p>${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);
|
||||
|
||||
bot.comment(process.env.GH_AUTH_TOKEN, `### 🤖 Automated Parsing Preview 🤖
|
||||
**Commit:** \`${bot.env.commitMessage}\`
|
||||
|
||||
![Screenshot of fixture (this embed should work after repo is public)](${bot.artifactUrl(screenshotPath)})
|
||||
|
||||
**${bot.artifactLink(fixtureArtifactPath, 'HTML Fixture')}**
|
||||
|
||||
**${bot.artifactLink(previewPath, 'Parsed Content Preview')}**
|
||||
|
||||
<details>
|
||||
<summary><b>Parsed JSON</b></summary>
|
||||
|
||||
\`\`\`json
|
||||
${JSON.stringify(json, null, 2)}
|
||||
\`\`\`
|
||||
|
||||
</details>
|
||||
<br />
|
||||
|
||||
|
||||
**\`null\` fields**
|
||||
|
||||
${Object.keys(json).map(key => json[key] !== null ? '' : ` * \`${key}\n\``).join('') || 'None'}
|
||||
|
||||
`
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
run();
|
||||
|
Loading…
Reference in New Issue