Add react component for Timeline visualization#524
Conversation
I don't think it should go into the main report. It will not be informative most of the time and it doesn't interact with the search component. I think some sort of tab-structure or drop-down menu might be useful here to switch between the different reports. @davidjgoss thoughts? |
davidjgoss
left a comment
There was a problem hiding this comment.
This is great, thanks for picking this up.
I appreciate this is still in draft but I'll give some high-level (functionality, not implementation) feedback now in case it's helpful:
- I agree with the tabs approach - I see the timeline as an alternate way to view and navigate the test run, with the list of feature files being the other one
- On that basis, I think selecting a test case should show the full
<TestCaseOutcome/>below it, not just a summary - that component should be re-usable, but you might need to add the title yourself - Where there is only one process, I think the "Main process" label can be dropped entirely
- I'm happy to see the filters and search honoured, though I'd like the timeline axis to remain the full test run time and not contract, so you can see where your matching scenarios are on the whole timeline, if that makes sense
Also, I just landed #528 which if you merge it in here will give you a more realistic sample ("parallel") to work with for testing without hand-crafting anything. This might expose some edge cases for you.
|
Also, if you have any friction with |
|
@davidjgoss Thanks for the feedback.
I haven't updated tests as they are not compatible with updated implementation. I think it makes sense to write tests after getting feedback on current implementation. I want to ask that timeline component should reflect same behavior on searching and filtering as Filtered docs ? |
Oh. You don't have to copy anything from Cucumber JVM. The choice at the time was rather arbitrary. If there are better libraries for rendering graphs and timelines free to use those. |
Actually, I ended up using vis-timeline after exploring a few alternatives. My first implementation was a custom React component because I thought it would integrate better than a vanilla JavaScript library. However, implementing features like smooth zooming and panning proved more involved than I expected. I then evaluated React timeline libraries, including react-calendar-timeline, but the ones I tried didn't provide the level of time resolution I needed (for example, zooming down to milliseconds). After that, I revisited vis-timeline and found it met the requirements while also providing the interaction I was looking for, so I switched to that instead. If there's another library you'd recommend that would be a better fit for this project, I'd be happy to explore it. |
|
Mmh. Then we've inherited some problems from the vis-timeline too. The current design is not very readable. The timeline compresses the pickle names too much. I don't have quite enough time to look into this much deeper today. But let me know what you think. |
|
Some thoughts on the timeline rendering:
The
Good question. We do have all the logic we need for properly searching and filtering already, but it's kind of wrapped up in the "documents" view. I think I can uncouple it from that and make it easier for you though - leave that with me for a day or two.
Definitely! We're still experimenting at this point. |
|
Thanks for the detailed feedback, I'll get working on these changes and update the PR soon. |






Status
This PR is currently a draft.
While testing the implementation, I realized the tests I initially wrote don't accurately reflect real parallel execution. I'm updating the test suite to better cover actual parallel behavior before requesting a review.
🤔 What's changed?
This PR adds a Timeline react component for better visualization of parallel runs.
⚡️ What's your motivation?
Fixes #126 .
🏷️ What kind of change is this?
♻️ Anything particular you want feedback on?
I’d appreciate feedback on adding Timeline component in Report component as opposed to Cucumber-jvm which implements Timeline separately. However Timeline can still be used as separate component.
📋 Checklist:
This text was originally generated from a template, then edited by hand. You can modify the template here.