Skip to content

Commit c63c292

Browse files
committed
push hydration back to readystate = complete
1 parent 8a977b3 commit c63c292

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

packages/react-on-rails/src/pageLifecycle.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ function initializePageEventListeners(): void {
6767
}
6868
isPageLifecycleInitialized = true;
6969

70-
if (document.readyState !== 'loading') {
70+
if (document.readyState === 'complete') {
7171
setupPageNavigationListeners();
7272
} else {
73-
document.addEventListener('DOMContentLoaded', setupPageNavigationListeners);
73+
document.addEventListener('load', setupPageNavigationListeners);
7474
}
7575
}
7676

packages/react-on-rails/tests/pageLifecycle.test.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -78,23 +78,23 @@ describe('pageLifecycle', () => {
7878
// Since no navigation library is mocked, callbacks should run immediately
7979
expect(callback).toHaveBeenCalledTimes(1);
8080
// Should not add DOMContentLoaded listener since readyState is not 'loading'
81-
expect(addEventListenerSpy).not.toHaveBeenCalledWith('DOMContentLoaded', expect.any(Function));
81+
expect(addEventListenerSpy).not.toHaveBeenCalledWith('readystatechange', expect.any(Function));
8282
});
8383

84-
it('should initialize page event listeners immediately when document.readyState is "interactive"', () => {
85-
setReadyState('interactive');
84+
it('should wait for readystatechange when document.readyState is "interactive"', () => {
85+
setReadyState('loading');
8686
const callback = jest.fn();
8787
const { onPageLoaded } = importPageLifecycle();
8888

8989
onPageLoaded(callback);
9090

91-
// Since no navigation library is mocked, callbacks should run immediately
92-
expect(callback).toHaveBeenCalledTimes(1);
93-
// Should not add DOMContentLoaded listener since readyState is not 'loading'
94-
expect(addEventListenerSpy).not.toHaveBeenCalledWith('DOMContentLoaded', expect.any(Function));
91+
// Should not call callback immediately since readyState is 'loading'
92+
expect(callback).not.toHaveBeenCalled();
93+
// Verify that a DOMContentLoaded listener was added when readyState is 'loading'
94+
expect(addEventListenerSpy).toHaveBeenCalledWith('load', expect.any(Function));
9595
});
9696

97-
it('should wait for DOMContentLoaded when document.readyState is "loading"', () => {
97+
it('should wait for readystatechange when document.readyState is "loading"', () => {
9898
setReadyState('loading');
9999
const callback = jest.fn();
100100
const { onPageLoaded } = importPageLifecycle();
@@ -104,7 +104,7 @@ describe('pageLifecycle', () => {
104104
// Should not call callback immediately since readyState is 'loading'
105105
expect(callback).not.toHaveBeenCalled();
106106
// Verify that a DOMContentLoaded listener was added when readyState is 'loading'
107-
expect(addEventListenerSpy).toHaveBeenCalledWith('DOMContentLoaded', expect.any(Function));
107+
expect(addEventListenerSpy).toHaveBeenCalledWith('load', expect.any(Function));
108108
});
109109

110110
describe('with Turbo navigation library', () => {

0 commit comments

Comments
 (0)