-
Notifications
You must be signed in to change notification settings - Fork 81
Description
We have a very large suite of cucumber tests driven by cucumber-rs. There are a few live integration tests of third party services we depend on that can fail for HTTP 500 errors (for example, amongst others).
There is a subset of upstream errors that we do not want to allow to block our CI pipeline, but would like to mark Skipped, which will keep our development team unblocked for any flakiness that is outside their control.
We have managed this internally by creating a custom writer, where for a failed step we inspect the error and call self.step_skipped rather than self.step_failed for certain circumstances.
Pseudo code:
pub trait MarkSkipped {
fn skip(&self, &StepError) -> bool;
}
#[derive(Clone, Debug, Deref, DerefMut)]
pub struct CustomWriter<M: MarkSkipped = crate::NoSkip, Out: io::Write = io::Stdout> {
#[deref]
#[deref_mut]
output: Out,
styles: Styles,
indent: usize,
lines_to_clear: usize,
verbosity: Verbosity,
terse: bool,
mark_skipped: M,
}We would love to ditch the custom writer and get back to the cucumber-rs internal writers, since it allows us to more regularly upgrade to the latest version with greater ease.
I am happy to upstream this feature to the package, if the maintainers feel there is any value to it. I wanted to run it by the team before I put in the effort to create the feature!