Skip to content

Commit

Permalink
feat: browser tests for new api. closes #485
Browse files Browse the repository at this point in the history
  • Loading branch information
broofa committed Jul 22, 2020
1 parent c16ebbd commit cd123b3
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 24 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -4,3 +4,4 @@ dist/
browserstack.err
local.log
*.tgz
.envrc
26 changes: 24 additions & 2 deletions examples/browser-rollup/example-all.js
@@ -1,9 +1,20 @@
import { v1 as uuidv1, v4 as uuidv4, v3 as uuidv3, v5 as uuidv5 } from 'uuid';
import {
parse as uuidParse,
stringify as uuidStringify,
v1 as uuidv1,
v3 as uuidv3,
v4 as uuidv4,
v5 as uuidv5,
validate as uuidValidate,
version as uuidVersion,
} from 'uuid';
import * as uuid from 'uuid';

import testpage from '../utils/testpage';

testpage(function (addTest, done) {
addTest('Named exports');

addTest('uuidv1()', uuidv1());

addTest('uuidv4()', uuidv4());
Expand Down Expand Up @@ -34,7 +45,13 @@ testpage(function (addTest, done) {
// const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341';
addTest('uuidv5() MY_NAMESPACE', uuidv5('Hello, World!', MY_NAMESPACE));

addTest('Same with default export');
// Utility functions
addTest('uuidParse()', uuidParse(MY_NAMESPACE));
addTest('uuidStringify()', uuidStringify(uuidParse(MY_NAMESPACE)));
addTest('uuidValidate()', uuidValidate(MY_NAMESPACE));
addTest('uuidVersion()', uuidVersion(MY_NAMESPACE));

addTest('Default export');

addTest('uuid.v1()', uuid.v1());
addTest('uuid.v4()', uuid.v4());
Expand All @@ -45,5 +62,10 @@ testpage(function (addTest, done) {
addTest('uuid.v5() URL', uuid.v5('http://example.com/hello', uuid.v5.URL));
addTest('uuid.v5() MY_NAMESPACE', uuid.v5('Hello, World!', MY_NAMESPACE));

addTest('uuid.parse()', uuid.parse(MY_NAMESPACE));
addTest('uuid.stringify()', uuid.stringify(uuid.parse(MY_NAMESPACE)));
addTest('uuid.validate()', uuid.validate(MY_NAMESPACE));
addTest('uuid.version()', uuid.version(MY_NAMESPACE));

done();
});
26 changes: 24 additions & 2 deletions examples/browser-webpack/example-all.js
@@ -1,9 +1,20 @@
import { v1 as uuidv1, v4 as uuidv4, v3 as uuidv3, v5 as uuidv5 } from 'uuid';
import {
parse as uuidParse,
stringify as uuidStringify,
v1 as uuidv1,
v3 as uuidv3,
v4 as uuidv4,
v5 as uuidv5,
validate as uuidValidate,
version as uuidVersion,
} from 'uuid';
import * as uuid from 'uuid';

import testpage from '../utils/testpage';

testpage(function (addTest, done) {
addTest('Named exports');

addTest('uuidv1()', uuidv1());

addTest('uuidv4()', uuidv4());
Expand Down Expand Up @@ -34,7 +45,13 @@ testpage(function (addTest, done) {
// const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341';
addTest('uuidv5() MY_NAMESPACE', uuidv5('Hello, World!', MY_NAMESPACE));

addTest('Same with default export');
// Utility functions
addTest('uuidParse()', uuidParse(MY_NAMESPACE));
addTest('uuidStringify()', uuidStringify(uuidParse(MY_NAMESPACE)));
addTest('uuidValidate()', uuidValidate(MY_NAMESPACE));
addTest('uuidVersion()', uuidVersion(MY_NAMESPACE));

addTest('Default export');

addTest('uuid.v1()', uuid.v1());
addTest('uuid.v4()', uuid.v4());
Expand All @@ -45,5 +62,10 @@ testpage(function (addTest, done) {
addTest('uuid.v5() URL', uuid.v5('http://example.com/hello', uuid.v5.URL));
addTest('uuid.v5() MY_NAMESPACE', uuid.v5('Hello, World!', MY_NAMESPACE));

addTest('uuid.parse()', uuid.parse(MY_NAMESPACE));
addTest('uuid.stringify()', uuid.stringify(uuid.parse(MY_NAMESPACE)));
addTest('uuid.validate()', uuid.validate(MY_NAMESPACE));
addTest('uuid.version()', uuid.version(MY_NAMESPACE));

done();
});
41 changes: 28 additions & 13 deletions examples/utils/testpage.js
@@ -1,23 +1,38 @@
export default function test(callback) {
const ul = document.createElement('ul');
document.body.appendChild(ul);
document.write(
'<style>' +
'body {font-family: monospace;}' +
'dt, dd {' +
' display: inline-block;' +
' margin: 0;' +
'}' +
'dt {' +
' min-width: 15em;' +
'}' +
'</style>',
);

export default function test(callback) {
function addTest(title, result) {
const li = document.createElement('li');

const h2 = document.createElement('h2');
h2.innerHTML = title;
li.appendChild(h2);
// join() result if it's array-like
if (result instanceof Uint8Array || Array.isArray(result)) {
result = Array.prototype.join.apply(result);
}

const p = document.createElement('p');
p.innerHTML = result;
li.appendChild(p);
let el;
if (result === undefined) {
el = document.createElement('h2');
el.innerHTML = title;
} else {
el = document.createElement('div');
el.className = 'test_result';
el.innerHTML = '<dt>' + title + '</dt>: <dd>' + result + '</dd>';
}

ul.appendChild(li);
document.body.appendChild(el);
}

function done() {
const div = document.createElement('div');
const div = document.createElement('h2');
div.id = 'done';
document.body.appendChild(div);
}
Expand Down
30 changes: 23 additions & 7 deletions test/browser/browser.spec.js
Expand Up @@ -15,7 +15,12 @@ const v3custom = (result) => expect(result).toBe('f5a52d34-dcd7-30f7-b581-0112fa
const v5dns = (result) => expect(result).toBe('fdda765f-fc57-5604-a269-52a7df8164ec');
const v5url = (result) => expect(result).toBe('3bbcee75-cecc-5b56-8031-b6641c1ed1f1');
const v5custom = (result) => expect(result).toBe('c49c5142-4d9a-5940-a926-612ede0ec632');
const ignore = (result) => true;

const parse = (result) =>
expect(result).toEqual('85,35,141,21,201,38,69,152,180,157,207,78,145,59,161,60');
const stringify = (result) => expect(result).toBe('55238d15-c926-4598-b49d-cf4e913ba13c');
const validate = (result) => expect(result).toBe('true');
const version = (result) => expect(result).toBe('4');

const expectations = {
'uuidv1()': v1,
Expand All @@ -26,7 +31,12 @@ const expectations = {
'uuidv5() DNS': v5dns,
'uuidv5() URL': v5url,
'uuidv5() MY_NAMESPACE': v5custom,
'Same with default export': ignore,

'uuidParse()': parse,
'uuidStringify()': stringify,
'uuidValidate()': validate,
'uuidVersion()': version,

'uuid.v1()': v1,
'uuid.v4()': v4,
'uuid.v3() DNS': v3dns,
Expand All @@ -35,6 +45,11 @@ const expectations = {
'uuid.v5() DNS': v5dns,
'uuid.v5() URL': v5url,
'uuid.v5() MY_NAMESPACE': v5custom,

'uuid.parse()': parse,
'uuid.stringify()': stringify,
'uuid.validate()': validate,
'uuid.version()': version,
};
const expectationTitles = Object.keys(expectations);

Expand All @@ -47,7 +62,7 @@ describe('BrowserStack Local Testing', () => {

await browser.waitUntil(async () => $('#done').isExisting(), 30000);

const elements = await $$('li');
const elements = await $$('.test_result');

// Unfortunately the WebDriver API is not thread safe and we cannot use Promise.all() to
// query it in parallel:
Expand All @@ -56,10 +71,11 @@ describe('BrowserStack Local Testing', () => {

for (let i = 0; i < elements.length; ++i) {
const element = elements[i];
const h2 = await element.$('h2');
const title = await h2.getText();
const p = await element.$('p');
const result = await p.getText();
const titleEl = await element.$('dt');
const title = await titleEl.getText();
const resultEl = await element.$('dd');
const result = await resultEl.getText();

expectations[title](result);
titles.push(title);
}
Expand Down

0 comments on commit cd123b3

Please sign in to comment.