Add osm-map-nano
This commit is contained in:
commit
bedef43e13
22 changed files with 739 additions and 0 deletions
67
scripts/test.cjs
Normal file
67
scripts/test.cjs
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
const assert = require('node:assert');
|
||||
const { spawn } = require('node:child_process');
|
||||
const fs = require('node:fs');
|
||||
|
||||
const { Browser, Builder, By } = require('selenium-webdriver');
|
||||
const firefox = require('selenium-webdriver/firefox');
|
||||
|
||||
async function test() {
|
||||
const generate_env_var = process.env.OSM_MAP_GENERATE_DATA || 'false';
|
||||
const generete_data = generate_env_var === '1' || generate_env_var.toLowerCase() === 'true';
|
||||
|
||||
const server = spawn('node', ['scripts/server.js'], {stdio: [null, null, 'inherit']}); // show stderr (stdout is read)
|
||||
console.log('Creating selenium driver');
|
||||
const options = new firefox.Options();
|
||||
options.addArguments('--headless');
|
||||
const driver = await new Builder().forBrowser(Browser.FIREFOX).setFirefoxOptions(options).build();
|
||||
try
|
||||
{
|
||||
const max_try = 5;
|
||||
let read_try = 0;
|
||||
for(; read_try < max_try; read_try +=1)
|
||||
{
|
||||
const server_out = server.stdout.read();
|
||||
if(server_out != null)
|
||||
{
|
||||
assert.equal('Server is listening on port 8080\n', server_out.toString(), 'Server not starting properly');
|
||||
break;
|
||||
}
|
||||
await driver.sleep(50);
|
||||
}
|
||||
assert.notEqual(read_try, max_try, 'Timeout waiting for server starting');
|
||||
|
||||
const test_name = 'test';
|
||||
console.log('Fetching test html');
|
||||
await driver.get('http://localhost:8080/build/packages/osm-map-nano/dist/test.html');
|
||||
assert.equal(`OSM Map Test : ${test_name}`, await driver.getTitle(), 'Wrong HTML title');
|
||||
|
||||
let canvas = await driver.findElement(By.id('canvas-test'));
|
||||
const image_url_prefix = 'data:image/png;base64,';
|
||||
const image_data = Buffer.from(
|
||||
(await driver.executeScript('return arguments[0].toDataURL()', canvas)).substring(image_url_prefix.length), 'base64');
|
||||
const expected_data = fs.readFileSync('data/test.png');
|
||||
if(generete_data)
|
||||
{
|
||||
if(!expected_data.equals(image_data))
|
||||
{
|
||||
console.log(`Generating image for test ${test_name}`);
|
||||
fs.writeFileSync('data/test.png', image_data);
|
||||
}
|
||||
}
|
||||
else
|
||||
assert.ok(expected_data.equals(image_data));
|
||||
}
|
||||
catch (error)
|
||||
{
|
||||
console.error('TEST FAILED');
|
||||
console.error(error);
|
||||
}
|
||||
finally
|
||||
{
|
||||
console.log('Exiting selenium driver');
|
||||
await driver.quit();
|
||||
server.kill('SIGINT');
|
||||
}
|
||||
}
|
||||
|
||||
test();
|
||||
Loading…
Add table
Add a link
Reference in a new issue