Skip to content
This repository was archived by the owner on Apr 11, 2024. It is now read-only.

Commit 8368a6d

Browse files
fix(wait): Add wait timeout, make GET request accepting 'text/html' (#15)
1 parent 550e228 commit 8368a6d

File tree

3 files changed

+59
-44
lines changed

3 files changed

+59
-44
lines changed

.eslintrc

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
{
2-
"extends": "sku"
2+
"extends": "seek",
3+
"rules": {
4+
"no-console": "off",
5+
"no-process-exit": "off"
6+
}
37
}

bin/cli.js

+52-41
Original file line numberDiff line numberDiff line change
@@ -53,63 +53,74 @@ require('yargs')
5353
describe: 'Set of command line arguments to be provided to the Chromium instance via Puppeteer, e.g. --puppeteer-args="--no-sandbox --disable-setuid-sandbox"'
5454
}
5555
}, async argv => {
56-
const port = argv.serve ? await getPort() : null;
57-
const server = argv.serve ? makeServer(argv.serve, port) : null;
58-
5956
try {
60-
const url = argv.file ? `file://${path.join(process.cwd(), argv.file)}` : argv.url;
61-
const symbolsUrl = argv.serve ? urlJoin(`http://localhost:${String(port)}`, argv.url || '/') : url;
62-
await waitOn({ resources: [symbolsUrl] });
63-
64-
const browser = await puppeteer.launch({ args: argv.puppeteerArgs ? argv.puppeteerArgs.split(' ') : [] });
57+
const port = argv.serve ? await getPort() : null;
58+
const server = argv.serve ? makeServer(argv.serve, port) : null;
6559

6660
try {
67-
const page = await browser.newPage();
61+
const url = argv.file ? `file://${path.join(process.cwd(), argv.file)}` : argv.url;
62+
const symbolsUrl = argv.serve ? urlJoin(`http://localhost:${String(port)}`, argv.url || '/') : url;
63+
64+
await waitOn({
65+
timeout: 5000,
66+
headers: { accept: 'text/html' },
67+
// Force 'wait-on' to make a GET request rather than a HEAD request
68+
resources: [symbolsUrl.replace(/^(https?)/, '$1-get')],
69+
});
70+
71+
const browser = await puppeteer.launch({ args: argv.puppeteerArgs ? argv.puppeteerArgs.split(' ') : [] });
72+
73+
try {
74+
const page = await browser.newPage();
6875

69-
await page.goto(symbolsUrl, { waitUntil: 'networkidle0' });
76+
await page.goto(symbolsUrl, { waitUntil: 'networkidle0' });
7077

71-
const bundlePath = path.resolve(__dirname, '../script/dist/generateAlmostSketch.bundle.js');
72-
const bundle = await readFileAsync(bundlePath, 'utf8');
73-
await page.addScriptTag({ content: bundle });
78+
const bundlePath = path.resolve(__dirname, '../script/dist/generateAlmostSketch.bundle.js');
79+
const bundle = await readFileAsync(bundlePath, 'utf8');
80+
await page.addScriptTag({ content: bundle });
7481

75-
await page.evaluate('generateAlmostSketch.setupSymbols({ name: "html-sketchapp symbols" })');
82+
await page.evaluate('generateAlmostSketch.setupSymbols({ name: "html-sketchapp symbols" })');
7683

77-
await page.evaluate('generateAlmostSketch.snapshotColorStyles()');
84+
await page.evaluate('generateAlmostSketch.snapshotColorStyles()');
7885

79-
const viewports = argv.viewports || { Desktop: '1024x768' };
80-
const hasViewports = Object.keys(viewports).length > 1;
81-
for (const viewportName in viewports) {
82-
if (viewports.hasOwnProperty(viewportName)) {
83-
const viewport = viewports[viewportName];
84-
const [ width, height ] = viewport.split('x').map(x => parseInt(x, 10));
85-
await page.setViewport({ width, height });
86-
await page.evaluate(`generateAlmostSketch.snapshotTextStyles({ suffix: "${hasViewports ? `/${viewportName}` : ''}" })`);
87-
await page.evaluate(`generateAlmostSketch.snapshotSymbols({ suffix: "${hasViewports ? `/${viewportName}` : ''}" })`);
86+
const viewports = argv.viewports || { Desktop: '1024x768' };
87+
const hasViewports = Object.keys(viewports).length > 1;
88+
for (const viewportName in viewports) {
89+
if (viewports.hasOwnProperty(viewportName)) {
90+
const viewport = viewports[viewportName];
91+
const [ width, height ] = viewport.split('x').map(x => parseInt(x, 10));
92+
await page.setViewport({ width, height });
93+
await page.evaluate(`generateAlmostSketch.snapshotTextStyles({ suffix: "${hasViewports ? `/${viewportName}` : ''}" })`);
94+
await page.evaluate(`generateAlmostSketch.snapshotSymbols({ suffix: "${hasViewports ? `/${viewportName}` : ''}" })`);
95+
}
8896
}
89-
}
9097

91-
const asketchDocumentJSON = await page.evaluate('generateAlmostSketch.getDocumentJSON()');
92-
const asketchPageJSON = await page.evaluate('generateAlmostSketch.getPageJSON()');
98+
const asketchDocumentJSON = await page.evaluate('generateAlmostSketch.getDocumentJSON()');
99+
const asketchPageJSON = await page.evaluate('generateAlmostSketch.getPageJSON()');
93100

94-
const outputPath = path.resolve(process.cwd(), argv.outDir);
95-
await mkdirp(outputPath);
101+
const outputPath = path.resolve(process.cwd(), argv.outDir);
102+
await mkdirp(outputPath);
96103

97-
const outputPagePath = path.join(outputPath, 'page.asketch.json');
98-
const outputDocumentPath = path.join(outputPath, 'document.asketch.json');
104+
const outputPagePath = path.join(outputPath, 'page.asketch.json');
105+
const outputDocumentPath = path.join(outputPath, 'document.asketch.json');
99106

100-
await Promise.all([
101-
writeFileAsync(outputPagePath, asketchPageJSON),
102-
writeFileAsync(outputDocumentPath, asketchDocumentJSON)
103-
]);
107+
await Promise.all([
108+
writeFileAsync(outputPagePath, asketchPageJSON),
109+
writeFileAsync(outputDocumentPath, asketchDocumentJSON)
110+
]);
111+
} finally {
112+
if (browser && typeof browser.close === 'function') {
113+
browser.close();
114+
}
115+
}
104116
} finally {
105-
if (browser && typeof browser.close === 'function') {
106-
browser.close();
117+
if (server && typeof server.stop === 'function') {
118+
server.stop();
107119
}
108120
}
109-
} finally {
110-
if (server && typeof server.stop === 'function') {
111-
server.stop();
112-
}
121+
} catch (err) {
122+
console.error(err);
123+
process.exit(1);
113124
}
114125
})
115126
.command('install', 'Install the html-sketchapp Sketch plugin', {}, () => {

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
"puppeteer": "^0.13.0",
4444
"serve": "^6.4.1",
4545
"url-join": "^2.0.2",
46-
"wait-on": "^2.0.2",
46+
"wait-on": "^2.1.0",
4747
"yargs": "^10.0.3"
4848
},
4949
"devDependencies": {
@@ -53,7 +53,7 @@
5353
"commitlint-config-seek": "^1.0.0",
5454
"cz-conventional-changelog": "^2.1.0",
5555
"eslint": "^4.13.1",
56-
"eslint-config-sku": "^1.2.1",
56+
"eslint-config-seek": "^3.0.0",
5757
"husky": "^0.14.3",
5858
"jest": "^22.0.1",
5959
"rimraf": "^2.6.2",

0 commit comments

Comments
 (0)