const {Chromeless} = require('chromeless');
const path = require('path');
const fs = require('fs');
const express = require('express');
const reftests = require('../tests/reftests');

const app = express();
app.use('/', express.static(path.resolve(__dirname, '../')));

const listener = app.listen(0, () => {
    async function run() {
        const chromeless = new Chromeless();
        const tests = Object.keys(reftests.testList);
        let i = 0;
        while (tests[i]) {
            const filename = tests[i];
            i++;
            const reftest = await chromeless
                .goto(`http://localhost:${listener.address().port}${filename}?reftest&run=false`)
                .evaluate(() =>
                    html2canvas(document.documentElement, {
                        windowWidth: 800,
                        windowHeight: 600,
                        target: new RefTestRenderer()
                    })
                );
            fs.writeFileSync(
                path.resolve(__dirname, `..${filename.replace(/\.html$/i, '.txt')}`),
                reftest
            );
        }

        await chromeless.end();
    }

    run().catch(console.error.bind(console)).then(() => process.exit(0));
});