Skip to content

Commit cf9a131

Browse files
authored
Adds a window.rsf_toggleLoading function that allows developers to easily toggle skeletons using chrome developer tools. (#65)
1 parent 6be4649 commit cf9a131

File tree

5 files changed

+59
-6
lines changed

5 files changed

+59
-6
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-storefront",
3-
"version": "7.9.2",
3+
"version": "7.10.0",
44
"description": "Build and deploy e-commerce progressive web apps (PWAs) in record time.",
55
"module": "./index.js",
66
"license": "Apache-2.0",

src/hooks/useLazyState.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,17 @@ export default function useLazyState(lazyProps, additionalData = {}) {
6464

6565
useEffect(() => {
6666
isInitialMount.current = false
67+
68+
if (process.env.NODE_ENV !== 'production') {
69+
// expose a global function that makes it easy to toggle skeletons during development via chrome develeoper console
70+
window.rsf_toggleLoading = () =>
71+
updateState(state => ({
72+
...state,
73+
loading: !state.loading,
74+
}))
75+
76+
return () => delete window.rsf_toggleLoading
77+
}
6778
}, [])
6879

6980
// save the page state in history.state before navigation

test/carousel/MediaCarousel.test.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,15 +145,13 @@ describe('MediaCarousel', () => {
145145
it('should hide the magnify hint if the lightbox is opened and the window is wider than the image', () => {
146146
wrapper = mount(<MediaCarousel media={media} />)
147147
wrapper.find(Carousel).simulate('click')
148-
console.log(wrapper.find(MagnifyHint))
149148
expect(wrapper.find(MagnifyHint)).toExist()
150149

151150
window.innerWidth = 1300
152151
window.dispatchEvent(new Event('resize'))
153152

154153
wrapper = mount(<MediaCarousel media={media} />)
155154
wrapper.find(Carousel).simulate('click')
156-
console.log(wrapper.find(MagnifyHint))
157155
expect(wrapper.find(MagnifyHint)).not.toExist()
158156
})
159157

test/hooks/useLazyState.test.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,4 +204,30 @@ describe('useLazyState', () => {
204204
value: 1,
205205
})
206206
})
207+
208+
it('should expose rsf_toggleLoading', () => {
209+
wrapper = mount(<Test value={1} />)
210+
act(() => window.rsf_toggleLoading())
211+
expect(state.loading).toBe(true)
212+
wrapper.unmount()
213+
expect(window.rsf_toggleLoading).not.toBeDefined()
214+
})
215+
216+
describe('production', () => {
217+
let { NODE_ENV } = process.env
218+
219+
beforeAll(() => {
220+
process.env.NODE_ENV = 'production'
221+
})
222+
223+
afterAll(() => {
224+
process.env.NODE_ENV = NODE_ENV
225+
})
226+
227+
it('should not expose rsf_toggleLoading in production', () => {
228+
wrapper = mount(<Test value={1} />)
229+
act(() => {})
230+
expect(window.rsf_toggleLoading).not.toBeDefined()
231+
})
232+
})
207233
})

test/nav/NavTab.test.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,13 +172,25 @@ describe('NavTab', () => {
172172
.find(Link)
173173
.first()
174174
.simulate('keydown', { key: 'Enter' })
175-
setImmediate(() => wrapper.update())
175+
176+
return new Promise(resolve => {
177+
setTimeout(() => {
178+
wrapper.update()
179+
resolve()
180+
})
181+
})
176182
})
177183
expect(wrapper.find(Popover).prop('open')).toBe(true)
178184

179185
await act(async () => {
180186
await navigate()
181-
setImmediate(() => wrapper.update())
187+
188+
return new Promise(resolve => {
189+
setTimeout(() => {
190+
wrapper.update()
191+
resolve()
192+
})
193+
})
182194
})
183195

184196
expect(wrapper.find(Popover).prop('open')).toBe(false)
@@ -249,7 +261,13 @@ describe('NavTab', () => {
249261
.find('a')
250262
.first()
251263
.simulate('blur')
252-
setImmediate(() => wrapper.update())
264+
265+
return new Promise(resolve => {
266+
setTimeout(() => {
267+
wrapper.update()
268+
resolve()
269+
}, 1)
270+
})
253271
})
254272

255273
expect(wrapper.find(Popover).prop('open')).toBe(false)

0 commit comments

Comments
 (0)