/
screenshots.js
executable file
·76 lines (64 loc) · 2.09 KB
/
screenshots.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/env node
const { prepareFS, prepareBrowser } = require('./screenshots/prepares')
const screenshotReactStyleguide = require('./screenshots/screenshotReactStyleguide')
const screenshotKSSStyleguide = require('./screenshots/screenshotKSSStyleguide')
const makeParser = require('./screenshots/parser')
const { readConfig, parseViewportArgument } = require('./screenshots/helpers')
let puppeteer
try {
puppeteer = require('puppeteer')
} catch (e) {
console.error(e)
console.log(
'Could not import puppeteer, you should install it if you want to take screenshots'
)
process.exit(1)
}
/**
* Fetches all components from styleguide and takes a screenshot of each.
*/
const main = async () => {
const parser = makeParser()
const config = await readConfig()
const args = parser.parseArgs()
const parsedViewport = parseViewportArgument(args.viewport)
console.log('\n⌛ Preparing screenshot directory...')
await prepareFS({
screenshotDir: args.screenshotDir,
emptyScreenshotDir: args.emptyScreenshotDir
})
console.log('✅ Done. Screenshot directory prepared')
for (const theme of [
{ type: 'light', variant: 'normal' },
{ type: 'light', variant: 'inverted' },
{ type: 'dark', variant: 'normal' },
{ type: 'dark', variant: 'inverted' }
]) {
console.log(
`\n✨ Running process for '${theme.type} ${theme.variant}' theme...`
)
console.log('\n⌛ Preparing browser...')
const { browser, page } = await prepareBrowser(puppeteer, {
viewport: parsedViewport,
theme
})
console.log('✅ Done. Browser opened and set up')
console.log('\n⌛ Preparing screenshots...')
if (args.mode == 'react') {
await screenshotReactStyleguide(page, args, config, theme)
} else if (args.mode == 'kss') {
await screenshotKSSStyleguide(page, args)
}
console.log(
`✅ Done. Screenshots completed for '${theme.type} ${theme.variant}' theme.`
)
await browser.close()
console.log('Browser closed')
}
}
if (require.main === module) {
main().catch(e => {
console.error(e)
process.exit(1)
})
}