Skip to content

Instantly share code, notes, and snippets.

@ebraminio
Created October 16, 2018 20:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ebraminio/dcc0331cd5e50e40dd6f5bede78dbbf9 to your computer and use it in GitHub Desktop.
Save ebraminio/dcc0331cd5e50e40dd6f5bede78dbbf9 to your computer and use it in GitHub Desktop.
puppeteer for harfbuzz
const puppeteer = require('puppeteer-core');
const fs = require('fs');
(async () => {
const browser = await puppeteer.launch({
headless: false,
executablePath: '/usr/bin/chromium-browser',
userDataDir: process.env.HOME + '/.config/chromium',
args: ['--profile-directory="Default"']
});
const page = await browser.newPage();
await page.goto('https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10342');
const link = await page.$eval('a[href^="https://oss-fuzz.com/download?testcase_id="]', element => element.href);
await page._client.send('Page.setDownloadBehavior', {behavior: 'allow', downloadPath: './'});
let fileName;
fs.watch('.', (_, name) => fileName = fileName ? fileName : name.replace('.crdownload', ''));
try { await page.goto(link); } catch(e) {}
await new Promise(resolve => setTimeout(resolve, 500));
// await page.goto('https://github.com/login');
// await page.$eval('#login_field', input => input.value = '');
// await page.$eval('[type="password"]', input => input.value = '');
// await page.$eval('button[type="submit"]', button => button.click());
await page.goto('https://github.com/autofetch/harfbuzz/upload/master/test');
await page.$eval('#commit-summary-input', input => input.value = '[bot] Add a test case, ' + fileName);
await (await page.$('input[type="file"]')).uploadFile(fileName);
await new Promise(resolve => setTimeout(resolve, 2000));
await page.$eval('.btn-primary', button => button.click());
await new Promise(resolve => setTimeout(resolve, 500));
await page.goto('https://github.com/autofetch/harfbuzz/pull/new/master');
await page.$eval('button .octicon-git-pull-request', button => button.parentElement.click());
await page.$eval('[name="pull_request[title]"]', input => input.value = '[bot] Add a new test case, ' + fileName);
await page.$eval('button.btn-primary[type="submit"]', button => {
button.removeAttribute('disabled');
button.click();
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment