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
 | 
						|
 | 
						|
 |