-
-
Notifications
You must be signed in to change notification settings - Fork 910
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: add Jest/jsdom compatibility (#642)
Jest runs browser tests in a jsdom environment which now also supports web crypto polyfills. Since ESM support in Jest is currently still limited, it requires a commonJS build for browser environments, see the discussion in #616 for all the details. Co-authored-by: Christoph Tavan <dev@tavan.de> Co-authored-by: Simen Bekkhus <sbekkhus91@gmail.com>
- Loading branch information
Showing
13 changed files
with
7,388 additions
and
55 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<title>UUID esmodule webpack example</title> | ||
</head> | ||
<body> | ||
<script type="text/javascript" src="./dist/allRequire.js"></script> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
const uuid = require('uuid'); | ||
const { | ||
NIL: NIL_UUID, | ||
parse: uuidParse, | ||
stringify: uuidStringify, | ||
v1: uuidv1, | ||
v3: uuidv3, | ||
v4: uuidv4, | ||
v5: uuidv5, | ||
validate: uuidValidate, | ||
version: uuidVersion, | ||
} = uuid; | ||
|
||
const { default: testpage } = require('../utils/testpage'); | ||
|
||
testpage(function (addTest, done) { | ||
addTest('Named exports'); | ||
|
||
addTest('uuidv1()', uuidv1()); | ||
|
||
addTest('uuidv4()', uuidv4()); | ||
|
||
// ... using predefined DNS namespace (for domain names) | ||
addTest('uuidv3() DNS', uuidv3('hello.example.com', uuidv3.DNS)); | ||
|
||
// ... using predefined URL namespace (for, well, URLs) | ||
addTest('uuidv3() URL', uuidv3('http://example.com/hello', uuidv3.URL)); | ||
|
||
// ... using a custom namespace | ||
// | ||
// Note: Custom namespaces should be a UUID string specific to your application! | ||
// E.g. the one here was generated using this modules `uuid` CLI. | ||
const MY_NAMESPACE = '55238d15-c926-4598-b49d-cf4e913ba13c'; | ||
addTest('uuidv3() MY_NAMESPACE', uuidv3('Hello, World!', MY_NAMESPACE)); | ||
|
||
// ... using predefined DNS namespace (for domain names) | ||
addTest('uuidv5() DNS', uuidv5('hello.example.com', uuidv5.DNS)); | ||
|
||
// ... using predefined URL namespace (for, well, URLs) | ||
addTest('uuidv5() URL', uuidv5('http://example.com/hello', uuidv5.URL)); | ||
|
||
// ... using a custom namespace | ||
// | ||
// Note: Custom namespaces should be a UUID string specific to your application! | ||
// E.g. the one here was generated using this modules `uuid` CLI. | ||
// const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341'; | ||
addTest('uuidv5() MY_NAMESPACE', uuidv5('Hello, World!', MY_NAMESPACE)); | ||
|
||
// Utility functions | ||
addTest('NIL_UUID', NIL_UUID); | ||
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()); | ||
addTest('uuid.v3() DNS', uuid.v3('hello.example.com', uuid.v3.DNS)); | ||
addTest('uuid.v3() URL', uuid.v3('http://example.com/hello', uuid.v3.URL)); | ||
addTest('uuid.v3() MY_NAMESPACE', uuid.v3('Hello, World!', MY_NAMESPACE)); | ||
addTest('uuid.v5() DNS', uuid.v5('hello.example.com', uuid.v5.DNS)); | ||
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.NIL', uuid.NIL); | ||
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(); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# uuid example Node.js Jest | ||
|
||
``` | ||
npm install | ||
npm test | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
/** @jest-environment jsdom */ | ||
|
||
const uuid = require('uuid'); | ||
|
||
test('uuidv4()', () => { | ||
const val = uuid.v4(); | ||
expect(uuid.version(val)).toBe(4); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
const uuid = require('uuid'); | ||
|
||
test('uuidv4()', () => { | ||
const val = uuid.v4(); | ||
expect(uuid.version(val)).toBe(4); | ||
}); |
Oops, something went wrong.
16f9c46
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ctavan @SimenB Thanks for that guys π
Is a release planned soon to publish this fix?
16f9c46
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I hope I will be able to finish up the release this week.
16f9c46
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FWIW a stable release of
jest@29
will also come this week16f9c46
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Glad to hear. I'm tracking this as well.
16f9c46
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have released
uuid@9.0.0-beta.0
that contains this patch. Please try it out and let me know if it fixes the Jest interoperability (to be tested withjest@29.0.0-alpha.1
).