Fix a flaky test in the timelinepanel code

Sometimes it was possible for there to be a scroll event before the initial
pagination completed, which then upset the rest of the test. Just give it a few
ms to sort itself out instead.
This commit is contained in:
Richard van der Hoff 2017-07-11 17:21:41 +01:00
parent 3e93930dcc
commit 1139dd2be5
2 changed files with 14 additions and 8 deletions

View file

@ -350,9 +350,9 @@ var TimelinePanel = React.createClass({
});
},
onMessageListScroll: function() {
onMessageListScroll: function(e) {
if (this.props.onScroll) {
this.props.onScroll();
this.props.onScroll(e);
}
if (this.props.manageReadMarkers) {

View file

@ -126,10 +126,15 @@ describe('TimelinePanel', function() {
timeline.addEvent(mkMessage(i));
}
var scrollDefer;
let scrollDefer;
const onScroll = (e) => {
console.log(`TimelinePanel called onScroll: ${e.target.scrollTop}`);
if (scrollDefer) {
scrollDefer.resolve();
}
};
var rendered = ReactDOM.render(
<WrappedTimelinePanel timelineSet={timelineSet} onScroll={() => {scrollDefer.resolve()}}
/>,
<WrappedTimelinePanel timelineSet={timelineSet} onScroll={onScroll} />,
parentDiv,
);
var panel = rendered.refs.panel;
@ -152,9 +157,8 @@ describe('TimelinePanel', function() {
return scrollDefer.promise;
};
// wait for the panel to load - we'll get a scroll event once it
// happens
awaitScroll().then(() => {
// let the first round of pagination finish off
q.delay(5).then(() => {
expect(panel.state.canBackPaginate).toBe(false);
expect(scryEventTiles(panel).length).toEqual(N_EVENTS);
@ -164,6 +168,8 @@ describe('TimelinePanel', function() {
// wait for the scroll event to land
}).then(awaitScroll).then(() => {
expect(scrollingDiv.scrollTop).toEqual(0);
// there should be no pagination going on now
expect(panel.state.backPaginating).toBe(false);
expect(panel.state.forwardPaginating).toBe(false);