Skip to content

Commit 9baddfe

Browse files
committed
Listen for special event
1 parent b333a9c commit 9baddfe

19 files changed

+98
-11
lines changed

packages/react-scripts/fixtures/kitchensink/integration/initDOM.js

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const path = require('path')
55

66
let getMarkup
77
let resourceLoader
8+
let initCallback
89

910
if (process.env.E2E_FILE) {
1011
const file = path.isAbsolute(process.env.E2E_FILE)
@@ -18,6 +19,8 @@ if (process.env.E2E_FILE) {
1819
null,
1920
fs.readFileSync(path.join(path.dirname(file), resource.url.pathname), 'utf8')
2021
)
22+
23+
initCallback = (doc, resolve) => doc.defaultView.addEventListener('load', () => resolve(doc), false)
2124
} else if (process.env.E2E_URL) {
2225
getMarkup = () => new Promise(resolve => {
2326
http.get(process.env.E2E_URL, (res) => {
@@ -30,6 +33,8 @@ if (process.env.E2E_FILE) {
3033
resourceLoader = (resource, callback) => {
3134
return resource.defaultFetch(callback)
3235
}
36+
37+
initCallback = (doc, resolve) => doc.addEventListener('fixture', () => resolve(doc), false)
3338
} else {
3439
it.only('can run jsdom (at least one of "E2E_FILE" or "E2E_URL" environment variables must be provided)', () => {
3540
expect(new Error('This isn\'t the error you are looking for.')).toBeUndefined()
@@ -49,15 +54,5 @@ export default feature => new Promise(async resolve => {
4954
virtualConsole: jsdom.createVirtualConsole().sendTo(console),
5055
})
5156

52-
doc.defaultView.addEventListener('load', () => {
53-
let tries = 0
54-
const check = () => {
55-
if (++tries > 50 || doc.querySelector('[id^="feature"]') != null) {
56-
resolve(doc)
57-
} else {
58-
setTimeout(check, 10)
59-
}
60-
}
61-
check()
62-
}, false)
57+
initCallback(doc, resolve)
6358
})

packages/react-scripts/fixtures/kitchensink/src/App.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react';
2+
import fixtureEvent from './features/fixture-event';
23

34
class App extends React.Component {
45
constructor(props) {
@@ -94,6 +95,12 @@ class App extends React.Component {
9495
this.setState({ feature });
9596
}
9697

98+
componentDidUpdate() {
99+
const { feature } = this.state;
100+
if (feature === null || React.Component.isPrototypeOf(feature)) return;
101+
fixtureEvent(document);
102+
}
103+
97104
render() {
98105
const Feature = this.state.feature;
99106
return Feature ? <Feature /> : null;

packages/react-scripts/fixtures/kitchensink/src/features/env/NodePath.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react'
22
import load from 'absoluteLoad'
3+
import fixtureEvent from '../fixture-event'
34

45
export default class extends React.Component {
56
constructor(props) {
@@ -13,6 +14,10 @@ export default class extends React.Component {
1314
this.setState({ users });
1415
}
1516

17+
componentDidUpdate() {
18+
fixtureEvent(document);
19+
}
20+
1621
render() {
1722
return (
1823
<div id="feature-node-path">
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default doc => {
2+
const event = doc.createEvent('CustomEvent');
3+
event.initCustomEvent('fixture', true, true, {});
4+
doc.dispatchEvent(event);
5+
}

packages/react-scripts/fixtures/kitchensink/src/features/syntax/ArrayDestructuring.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
function load() {
45
return [
@@ -21,6 +22,10 @@ export default class extends React.Component {
2122
this.setState({ users });
2223
}
2324

25+
componentDidUpdate() {
26+
fixtureEvent(document);
27+
}
28+
2429
render() {
2530
return (
2631
<div id="feature-array-destructuring">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/ArraySpread.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
function load(users) {
45
return [
@@ -21,6 +22,10 @@ export default class extends React.Component {
2122
this.setState({ users });
2223
}
2324

25+
componentDidUpdate() {
26+
fixtureEvent(document);
27+
}
28+
2429
render() {
2530
return (
2631
<div id="feature-array-spread">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/AsyncAwait.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
async function load() {
45
return [
@@ -21,6 +22,10 @@ export default class extends React.Component {
2122
this.setState({ users });
2223
}
2324

25+
componentDidUpdate() {
26+
fixtureEvent(document);
27+
}
28+
2429
render() {
2530
return (
2631
<div id="feature-async-await">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/ClassProperties.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
export default class extends React.Component {
45
users = [
@@ -8,6 +9,10 @@ export default class extends React.Component {
89
{ id: 4, name: '4' }
910
];
1011

12+
componentDidMount() {
13+
fixtureEvent(document);
14+
}
15+
1116
render() {
1217
return (
1318
<div id="feature-class-properties">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/ComputedProperties.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
function load(prefix) {
45
return [
@@ -21,6 +22,10 @@ export default class extends React.Component {
2122
this.setState({ users });
2223
}
2324

25+
componentDidUpdate() {
26+
fixtureEvent(document);
27+
}
28+
2429
render() {
2530
return (
2631
<div id="feature-computed-properties">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/CustomInterpolation.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
const styled = ([style]) => style.trim()
45
.split(/\s*;\s*/)
@@ -26,6 +27,10 @@ export default class extends React.Component {
2627
this.setState({ users });
2728
}
2829

30+
componentDidUpdate() {
31+
fixtureEvent(document);
32+
}
33+
2934
render() {
3035
const veryInlineStyle = styled`
3136
background: palevioletred;

packages/react-scripts/fixtures/kitchensink/src/features/syntax/DefaultParameters.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
function load(id = 0) {
45
return [
@@ -21,6 +22,10 @@ export default class extends React.Component {
2122
this.setState({ users });
2223
}
2324

25+
componentDidUpdate() {
26+
fixtureEvent(document);
27+
}
28+
2429
render() {
2530
return (
2631
<div id="feature-default-parameters">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/DestructuringAndAwait.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
async function load() {
45
return { users: [
@@ -21,6 +22,10 @@ export default class extends React.Component {
2122
this.setState({ users });
2223
}
2324

25+
componentDidUpdate() {
26+
fixtureEvent(document);
27+
}
28+
2429
render() {
2530
return (
2631
<div id="feature-destructuring-and-await">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/Generators.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
function * load(limit) {
45
let i = 1;
@@ -23,6 +24,10 @@ export default class extends React.Component {
2324
this.setState({ users });
2425
}
2526

27+
componentDidUpdate() {
28+
fixtureEvent(document);
29+
}
30+
2631
render() {
2732
return (
2833
<div id="feature-generators">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/ObjectDestructuring.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
function load() {
45
return [
@@ -21,6 +22,10 @@ export default class extends React.Component {
2122
this.setState({ users });
2223
}
2324

25+
componentDidUpdate() {
26+
fixtureEvent(document);
27+
}
28+
2429
render() {
2530
return (
2631
<div id="feature-object-destructuring">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/ObjectSpread.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
function load(baseUser) {
45
return [
@@ -21,6 +22,10 @@ export default class extends React.Component {
2122
this.setState({ users });
2223
}
2324

25+
componentDidUpdate() {
26+
fixtureEvent(document);
27+
}
28+
2429
render() {
2530
return (
2631
<div id="feature-object-spread">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/Promises.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
function load() {
45
return Promise.resolve([
@@ -22,6 +23,10 @@ export default class extends React.Component {
2223
});
2324
}
2425

26+
componentDidUpdate() {
27+
fixtureEvent(document);
28+
}
29+
2530
render() {
2631
return (
2732
<div id="feature-promises">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/RestAndDefault.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
function load({ id, ...rest } = { id: 0, user: { id: 42, name: '42' } }) {
45
return [
@@ -21,6 +22,10 @@ export default class extends React.Component {
2122
this.setState({ users });
2223
}
2324

25+
componentDidUpdate() {
26+
fixtureEvent(document);
27+
}
28+
2429
render() {
2530
return (
2631
<div id="feature-rest-and-default">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/RestParameters.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
function load({ id = 0, ...rest }) {
45
return [
@@ -21,6 +22,10 @@ export default class extends React.Component {
2122
this.setState({ users });
2223
}
2324

25+
componentDidUpdate() {
26+
fixtureEvent(document);
27+
}
28+
2429
render() {
2530
return (
2631
<div id="feature-rest-parameters">

packages/react-scripts/fixtures/kitchensink/src/features/syntax/TemplateInterpolation.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import fixtureEvent from '../fixture-event'
23

34
function load(name) {
45
return [
@@ -21,6 +22,10 @@ export default class extends React.Component {
2122
this.setState({ users });
2223
}
2324

25+
componentDidUpdate() {
26+
fixtureEvent(document);
27+
}
28+
2429
render() {
2530
return (
2631
<div id="feature-template-interpolation">

0 commit comments

Comments
 (0)