114 lines
2.9 KiB
JavaScript
114 lines
2.9 KiB
JavaScript
let fs = require('fs')
|
|
let path = require('path')
|
|
let {thumbnail} = require('./utils.js')
|
|
|
|
let pairs = []
|
|
let urlMap = new Map()
|
|
function isFile(path) {
|
|
try {
|
|
return !fs.lstatSync(path).isDirectory()
|
|
} catch(e) {
|
|
if (e.code == 'ENOENT'){
|
|
return false
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
|
|
function listPairs(src, dst, skipFiles=true) {
|
|
let dir = fs.readdirSync(src)
|
|
for(let name of dir) {
|
|
let srcPath = src + name
|
|
if (isFile(srcPath) && !skipFiles) {
|
|
if (srcPath.endsWith('.html')) {
|
|
let dstPath = dst + name.replace(/.html/, '.png')
|
|
pairs.push([srcPath, dstPath])
|
|
}
|
|
}
|
|
else {
|
|
if (srcPath.endsWith('.'))
|
|
continue
|
|
let indexPath = srcPath + path.sep + 'index.html'
|
|
if (isFile(indexPath)) {
|
|
let thumbnailPath = indexPath.replace(/index.html/, 'thumbnail.png')
|
|
pairs.push([indexPath, thumbnailPath])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function capturePage(focusedWindow, dstPath) {
|
|
focusedWindow.capturePage( (image) => {
|
|
fs.writeFile(dstPath, thumbnail(image), (err) => {
|
|
if (err) throw err;
|
|
nextLoadTest(focusedWindow)
|
|
})
|
|
})
|
|
}
|
|
|
|
function testLoading(focusedWindow, filePath, dstPath) {
|
|
let urlPath = filePath.replace(path.sep, '/')
|
|
let basePath = `${__dirname}`.replace('/browser', '')
|
|
let shortURL = `file://${basePath}/${urlPath}`
|
|
let fullURL = `file://${__dirname}/../../${urlPath}`
|
|
// console.log({basePath, shortURL, fullURL})
|
|
if (focusedWindow) {
|
|
urlMap.set(shortURL, dstPath)
|
|
focusedWindow.webContents.session.clearCache(() => console.log('Cache cleared'))
|
|
focusedWindow.webContents.loadURL(shortURL)
|
|
}
|
|
}
|
|
|
|
function listLibPairs() {
|
|
let src = "lib" + path.sep
|
|
let dst = "lib" + path.sep + 'thumbnails' + path.sep
|
|
listPairs(src, dst, false)
|
|
}
|
|
|
|
function listAppPairs() {
|
|
let src = "apps" + path.sep
|
|
let dst = "apps" + path.sep
|
|
listPairs(src, dst)
|
|
}
|
|
|
|
function listSrcPairs() {
|
|
let src = "src" + path.sep
|
|
let dst = "src" + path.sep
|
|
listPairs(src, dst)
|
|
}
|
|
|
|
function nextLoadTest(focusedWindow) {
|
|
if (global.errorCount > 0 && global.stopTestsOnError) {
|
|
console.log("Test aborted")
|
|
return
|
|
}
|
|
if (pairs.length > 0) {
|
|
let [file, image] = pairs.pop()
|
|
testLoading(focusedWindow, file, image)
|
|
}
|
|
else {
|
|
console.log("All thumbnails created")
|
|
}
|
|
}
|
|
|
|
function loadTests(focusedWindow) {
|
|
global.errorCount = 0
|
|
focusedWindow.webContents.on('did-finish-load', (e) => {
|
|
setTimeout(() => {
|
|
let url = e.sender.history[e.sender.history.length-1]
|
|
dstPath = urlMap.get(url)
|
|
capturePage(focusedWindow, dstPath)
|
|
}, 5000)
|
|
})
|
|
|
|
listLibPairs()
|
|
listSrcPairs()
|
|
listAppPairs()
|
|
nextLoadTest(focusedWindow)
|
|
}
|
|
|
|
module.exports = loadTests
|
|
|
|
|