diff --git a/gauge-proto b/gauge-proto index dc8fbbe..5dc343c 160000 --- a/gauge-proto +++ b/gauge-proto @@ -1 +1 @@ -Subproject commit dc8fbbe8b4ec4691f8ec37ecdb3813bdeac87dbc +Subproject commit 5dc343c6567076292afb6ab44b35bbced2d1fff6 diff --git a/gauge_messages/spec.pb.go b/gauge_messages/spec.pb.go index 5e42739..56290ff 100644 --- a/gauge_messages/spec.pb.go +++ b/gauge_messages/spec.pb.go @@ -45,7 +45,7 @@ func (x ExecutionStatus) String() string { return proto.EnumName(ExecutionStatus_name, int32(x)) } func (ExecutionStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{0} + return fileDescriptor_spec_17d5ce73e0227e31, []int{0} } // / Enumerates various item types that the proto item can contain. Valid types are: Step, Comment, Concept, Scenario, TableDrivenScenario, Table, Tags @@ -84,7 +84,7 @@ func (x ProtoItem_ItemType) String() string { return proto.EnumName(ProtoItem_ItemType_name, int32(x)) } func (ProtoItem_ItemType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{1, 0} + return fileDescriptor_spec_17d5ce73e0227e31, []int{1, 0} } // / Enum representing the types of Fragment @@ -108,7 +108,7 @@ func (x Fragment_FragmentType) String() string { return proto.EnumName(Fragment_FragmentType_name, int32(x)) } func (Fragment_FragmentType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{8, 0} + return fileDescriptor_spec_17d5ce73e0227e31, []int{8, 0} } // / Enum representing types of Parameter. @@ -141,7 +141,7 @@ func (x Parameter_ParameterType) String() string { return proto.EnumName(Parameter_ParameterType_name, int32(x)) } func (Parameter_ParameterType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{9, 0} + return fileDescriptor_spec_17d5ce73e0227e31, []int{9, 0} } type ProtoExecutionResult_ErrorType int32 @@ -164,7 +164,7 @@ func (x ProtoExecutionResult_ErrorType) String() string { return proto.EnumName(ProtoExecutionResult_ErrorType_name, int32(x)) } func (ProtoExecutionResult_ErrorType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{14, 0} + return fileDescriptor_spec_17d5ce73e0227e31, []int{14, 0} } type Error_ErrorType int32 @@ -187,7 +187,7 @@ func (x Error_ErrorType) String() string { return proto.EnumName(Error_ErrorType_name, int32(x)) } func (Error_ErrorType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{18, 0} + return fileDescriptor_spec_17d5ce73e0227e31, []int{18, 0} } // / A proto object representing a Specification @@ -228,7 +228,7 @@ func (m *ProtoSpec) Reset() { *m = ProtoSpec{} } func (m *ProtoSpec) String() string { return proto.CompactTextString(m) } func (*ProtoSpec) ProtoMessage() {} func (*ProtoSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{0} + return fileDescriptor_spec_17d5ce73e0227e31, []int{0} } func (m *ProtoSpec) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoSpec.Unmarshal(m, b) @@ -368,7 +368,7 @@ func (m *ProtoItem) Reset() { *m = ProtoItem{} } func (m *ProtoItem) String() string { return proto.CompactTextString(m) } func (*ProtoItem) ProtoMessage() {} func (*ProtoItem) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{1} + return fileDescriptor_spec_17d5ce73e0227e31, []int{1} } func (m *ProtoItem) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoItem.Unmarshal(m, b) @@ -495,7 +495,7 @@ func (m *ProtoScenario) Reset() { *m = ProtoScenario{} } func (m *ProtoScenario) String() string { return proto.CompactTextString(m) } func (*ProtoScenario) ProtoMessage() {} func (*ProtoScenario) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{2} + return fileDescriptor_spec_17d5ce73e0227e31, []int{2} } func (m *ProtoScenario) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoScenario.Unmarshal(m, b) @@ -674,7 +674,7 @@ func (m *Span) Reset() { *m = Span{} } func (m *Span) String() string { return proto.CompactTextString(m) } func (*Span) ProtoMessage() {} func (*Span) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{3} + return fileDescriptor_spec_17d5ce73e0227e31, []int{3} } func (m *Span) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Span.Unmarshal(m, b) @@ -737,7 +737,7 @@ func (m *ProtoTableDrivenScenario) Reset() { *m = ProtoTableDrivenScenar func (m *ProtoTableDrivenScenario) String() string { return proto.CompactTextString(m) } func (*ProtoTableDrivenScenario) ProtoMessage() {} func (*ProtoTableDrivenScenario) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{4} + return fileDescriptor_spec_17d5ce73e0227e31, []int{4} } func (m *ProtoTableDrivenScenario) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoTableDrivenScenario.Unmarshal(m, b) @@ -798,7 +798,7 @@ func (m *ProtoStep) Reset() { *m = ProtoStep{} } func (m *ProtoStep) String() string { return proto.CompactTextString(m) } func (*ProtoStep) ProtoMessage() {} func (*ProtoStep) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{5} + return fileDescriptor_spec_17d5ce73e0227e31, []int{5} } func (m *ProtoStep) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoStep.Unmarshal(m, b) @@ -893,7 +893,7 @@ func (m *ProtoConcept) Reset() { *m = ProtoConcept{} } func (m *ProtoConcept) String() string { return proto.CompactTextString(m) } func (*ProtoConcept) ProtoMessage() {} func (*ProtoConcept) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{6} + return fileDescriptor_spec_17d5ce73e0227e31, []int{6} } func (m *ProtoConcept) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoConcept.Unmarshal(m, b) @@ -947,7 +947,7 @@ func (m *ProtoTags) Reset() { *m = ProtoTags{} } func (m *ProtoTags) String() string { return proto.CompactTextString(m) } func (*ProtoTags) ProtoMessage() {} func (*ProtoTags) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{7} + return fileDescriptor_spec_17d5ce73e0227e31, []int{7} } func (m *ProtoTags) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoTags.Unmarshal(m, b) @@ -992,7 +992,7 @@ func (m *Fragment) Reset() { *m = Fragment{} } func (m *Fragment) String() string { return proto.CompactTextString(m) } func (*Fragment) ProtoMessage() {} func (*Fragment) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{8} + return fileDescriptor_spec_17d5ce73e0227e31, []int{8} } func (m *Fragment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Fragment.Unmarshal(m, b) @@ -1052,7 +1052,7 @@ func (m *Parameter) Reset() { *m = Parameter{} } func (m *Parameter) String() string { return proto.CompactTextString(m) } func (*Parameter) ProtoMessage() {} func (*Parameter) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{9} + return fileDescriptor_spec_17d5ce73e0227e31, []int{9} } func (m *Parameter) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Parameter.Unmarshal(m, b) @@ -1113,7 +1113,7 @@ func (m *ProtoComment) Reset() { *m = ProtoComment{} } func (m *ProtoComment) String() string { return proto.CompactTextString(m) } func (*ProtoComment) ProtoMessage() {} func (*ProtoComment) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{10} + return fileDescriptor_spec_17d5ce73e0227e31, []int{10} } func (m *ProtoComment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoComment.Unmarshal(m, b) @@ -1155,7 +1155,7 @@ func (m *ProtoTable) Reset() { *m = ProtoTable{} } func (m *ProtoTable) String() string { return proto.CompactTextString(m) } func (*ProtoTable) ProtoMessage() {} func (*ProtoTable) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{11} + return fileDescriptor_spec_17d5ce73e0227e31, []int{11} } func (m *ProtoTable) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoTable.Unmarshal(m, b) @@ -1202,7 +1202,7 @@ func (m *ProtoTableRow) Reset() { *m = ProtoTableRow{} } func (m *ProtoTableRow) String() string { return proto.CompactTextString(m) } func (*ProtoTableRow) ProtoMessage() {} func (*ProtoTableRow) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{12} + return fileDescriptor_spec_17d5ce73e0227e31, []int{12} } func (m *ProtoTableRow) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoTableRow.Unmarshal(m, b) @@ -1248,7 +1248,7 @@ func (m *ProtoStepExecutionResult) Reset() { *m = ProtoStepExecutionResu func (m *ProtoStepExecutionResult) String() string { return proto.CompactTextString(m) } func (*ProtoStepExecutionResult) ProtoMessage() {} func (*ProtoStepExecutionResult) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{13} + return fileDescriptor_spec_17d5ce73e0227e31, []int{13} } func (m *ProtoStepExecutionResult) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoStepExecutionResult.Unmarshal(m, b) @@ -1313,24 +1313,28 @@ type ProtoExecutionResult struct { ErrorMessage string `protobuf:"bytes,3,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"` // / Stacktrace of the error StackTrace string `protobuf:"bytes,4,opt,name=stackTrace,proto3" json:"stackTrace,omitempty"` - // / Byte array containing screenshot taken at the time of failure. - ScreenShot [][]byte `protobuf:"bytes,5,rep,name=screenShot,proto3" json:"screenShot,omitempty"` + // / [DEPRECATED, use failedScreenshot] Bytes containing screenshot taken at the time of failure. + ScreenShot []byte `protobuf:"bytes,5,opt,name=screenShot,proto3" json:"screenShot,omitempty"` // Deprecated: Do not use. // / Holds the time taken for executing this scenario. ExecutionTime int64 `protobuf:"varint,6,opt,name=executionTime,proto3" json:"executionTime,omitempty"` // / Additional information at exec time to be available on reports Message []string `protobuf:"bytes,7,rep,name=message,proto3" json:"message,omitempty"` // / Type of the Error. Valid values: ASSERTION, VERIFICATION. Default: ASSERTION - ErrorType ProtoExecutionResult_ErrorType `protobuf:"varint,8,opt,name=errorType,proto3,enum=gauge.messages.ProtoExecutionResult_ErrorType" json:"errorType,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ErrorType ProtoExecutionResult_ErrorType `protobuf:"varint,8,opt,name=errorType,proto3,enum=gauge.messages.ProtoExecutionResult_ErrorType" json:"errorType,omitempty"` + // / Bytes containing screenshot taken at the time of failure. + FailureScreenshot []byte `protobuf:"bytes,9,opt,name=failureScreenshot,proto3" json:"failureScreenshot,omitempty"` + // / Bytes array containing screenshots at the time of it invoked + Screenshots [][]byte `protobuf:"bytes,10,rep,name=screenshots,proto3" json:"screenshots,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ProtoExecutionResult) Reset() { *m = ProtoExecutionResult{} } func (m *ProtoExecutionResult) String() string { return proto.CompactTextString(m) } func (*ProtoExecutionResult) ProtoMessage() {} func (*ProtoExecutionResult) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{14} + return fileDescriptor_spec_17d5ce73e0227e31, []int{14} } func (m *ProtoExecutionResult) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoExecutionResult.Unmarshal(m, b) @@ -1378,7 +1382,8 @@ func (m *ProtoExecutionResult) GetStackTrace() string { return "" } -func (m *ProtoExecutionResult) GetScreenShot() [][]byte { +// Deprecated: Do not use. +func (m *ProtoExecutionResult) GetScreenShot() []byte { if m != nil { return m.ScreenShot } @@ -1406,6 +1411,20 @@ func (m *ProtoExecutionResult) GetErrorType() ProtoExecutionResult_ErrorType { return ProtoExecutionResult_ASSERTION } +func (m *ProtoExecutionResult) GetFailureScreenshot() []byte { + if m != nil { + return m.FailureScreenshot + } + return nil +} + +func (m *ProtoExecutionResult) GetScreenshots() [][]byte { + if m != nil { + return m.Screenshots + } + return nil +} + // / A proto object representing a pre-hook failure. // / Used to hold failure information for before_suite, before_spec, before_scenario and before_spec hooks. type ProtoHookFailure struct { @@ -1413,10 +1432,12 @@ type ProtoHookFailure struct { StackTrace string `protobuf:"bytes,1,opt,name=stackTrace,proto3" json:"stackTrace,omitempty"` // / Error message from the failure ErrorMessage string `protobuf:"bytes,2,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"` - // / Byte array holding the screenshot taken at the time of failure. - ScreenShot [][]byte `protobuf:"bytes,3,rep,name=screenShot,proto3" json:"screenShot,omitempty"` + // / [DEPRECATED, use failedScreenshot] Bytes holding the screenshot taken at the time of failure. + ScreenShot []byte `protobuf:"bytes,3,opt,name=screenShot,proto3" json:"screenShot,omitempty"` // Deprecated: Do not use. // / Contains table row index corresponding to datatable rows - TableRowIndex int32 `protobuf:"varint,4,opt,name=tableRowIndex,proto3" json:"tableRowIndex,omitempty"` + TableRowIndex int32 `protobuf:"varint,4,opt,name=tableRowIndex,proto3" json:"tableRowIndex,omitempty"` + // /Bytes holding the screenshot taken at the time of failure. + FailureScreenshot []byte `protobuf:"bytes,5,opt,name=failureScreenshot,proto3" json:"failureScreenshot,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1426,7 +1447,7 @@ func (m *ProtoHookFailure) Reset() { *m = ProtoHookFailure{} } func (m *ProtoHookFailure) String() string { return proto.CompactTextString(m) } func (*ProtoHookFailure) ProtoMessage() {} func (*ProtoHookFailure) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{15} + return fileDescriptor_spec_17d5ce73e0227e31, []int{15} } func (m *ProtoHookFailure) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoHookFailure.Unmarshal(m, b) @@ -1460,7 +1481,8 @@ func (m *ProtoHookFailure) GetErrorMessage() string { return "" } -func (m *ProtoHookFailure) GetScreenShot() [][]byte { +// Deprecated: Do not use. +func (m *ProtoHookFailure) GetScreenShot() []byte { if m != nil { return m.ScreenShot } @@ -1474,6 +1496,13 @@ func (m *ProtoHookFailure) GetTableRowIndex() int32 { return 0 } +func (m *ProtoHookFailure) GetFailureScreenshot() []byte { + if m != nil { + return m.FailureScreenshot + } + return nil +} + // / A proto object representing the result of entire Suite execution. type ProtoSuiteResult struct { // / Contains the result from the execution @@ -1520,7 +1549,7 @@ func (m *ProtoSuiteResult) Reset() { *m = ProtoSuiteResult{} } func (m *ProtoSuiteResult) String() string { return proto.CompactTextString(m) } func (*ProtoSuiteResult) ProtoMessage() {} func (*ProtoSuiteResult) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{16} + return fileDescriptor_spec_17d5ce73e0227e31, []int{16} } func (m *ProtoSuiteResult) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoSuiteResult.Unmarshal(m, b) @@ -1699,7 +1728,7 @@ func (m *ProtoSpecResult) Reset() { *m = ProtoSpecResult{} } func (m *ProtoSpecResult) String() string { return proto.CompactTextString(m) } func (*ProtoSpecResult) ProtoMessage() {} func (*ProtoSpecResult) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{17} + return fileDescriptor_spec_17d5ce73e0227e31, []int{17} } func (m *ProtoSpecResult) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoSpecResult.Unmarshal(m, b) @@ -1808,7 +1837,7 @@ func (m *Error) Reset() { *m = Error{} } func (m *Error) String() string { return proto.CompactTextString(m) } func (*Error) ProtoMessage() {} func (*Error) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{18} + return fileDescriptor_spec_17d5ce73e0227e31, []int{18} } func (m *Error) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Error.Unmarshal(m, b) @@ -1873,7 +1902,7 @@ func (m *ProtoStepValue) Reset() { *m = ProtoStepValue{} } func (m *ProtoStepValue) String() string { return proto.CompactTextString(m) } func (*ProtoStepValue) ProtoMessage() {} func (*ProtoStepValue) Descriptor() ([]byte, []int) { - return fileDescriptor_spec_03908e27a3f251e2, []int{19} + return fileDescriptor_spec_17d5ce73e0227e31, []int{19} } func (m *ProtoStepValue) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProtoStepValue.Unmarshal(m, b) @@ -1943,128 +1972,129 @@ func init() { proto.RegisterEnum("gauge.messages.Error_ErrorType", Error_ErrorType_name, Error_ErrorType_value) } -func init() { proto.RegisterFile("spec.proto", fileDescriptor_spec_03908e27a3f251e2) } +func init() { proto.RegisterFile("spec.proto", fileDescriptor_spec_17d5ce73e0227e31) } -var fileDescriptor_spec_03908e27a3f251e2 = []byte{ - // 1906 bytes of a gzipped FileDescriptorProto +var fileDescriptor_spec_17d5ce73e0227e31 = []byte{ + // 1935 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xdd, 0x8e, 0x1b, 0x49, 0x15, 0x9e, 0x76, 0xb7, 0xff, 0x8e, 0x7f, 0xa6, 0x53, 0x33, 0x84, 0x26, 0x0a, 0x89, 0xd5, 0x9a, 0xd5, 0x9a, 0x28, 0x6b, 0xc2, 0xac, 0xc8, 0x0a, 0x21, 0x81, 0x66, 0xc7, 0x9e, 0x8d, 0x21, 0x3b, - 0x19, 0x95, 0x4d, 0x84, 0xf6, 0x66, 0xe9, 0xf4, 0x54, 0x3c, 0xbd, 0xb1, 0xbb, 0xad, 0xee, 0x72, - 0x66, 0x02, 0xf7, 0x3c, 0x00, 0x37, 0xdc, 0xf0, 0x04, 0x48, 0x5c, 0xf1, 0x02, 0x48, 0x48, 0xdc, - 0x20, 0xf1, 0x08, 0x88, 0xe7, 0xe0, 0x0a, 0xd5, 0xa9, 0xea, 0x5f, 0xb7, 0x67, 0x6c, 0xc4, 0x05, - 0x77, 0x55, 0xe7, 0xa7, 0xba, 0xce, 0xa9, 0xaf, 0xce, 0xf9, 0xaa, 0x01, 0xa2, 0x25, 0x73, 0x07, - 0xcb, 0x30, 0xe0, 0x01, 0xe9, 0xce, 0x9c, 0xd5, 0x8c, 0x0d, 0x16, 0x2c, 0x8a, 0x9c, 0x19, 0x8b, - 0xec, 0x7f, 0x19, 0xd0, 0xbc, 0x10, 0x9a, 0xc9, 0x92, 0xb9, 0xa4, 0x07, 0x2d, 0x61, 0xfb, 0x82, - 0x39, 0x97, 0x9e, 0x3f, 0xb3, 0xb4, 0x9e, 0xd6, 0x6f, 0xd2, 0xac, 0x88, 0x7c, 0x1f, 0xaa, 0x1e, - 0x67, 0x8b, 0xc8, 0xaa, 0xf4, 0xf4, 0x7e, 0xeb, 0xf8, 0x3b, 0x83, 0xfc, 0x7a, 0x03, 0x5c, 0x6b, - 0xcc, 0xd9, 0x82, 0x4a, 0x3b, 0x72, 0x04, 0x1d, 0x2f, 0x9a, 0x3a, 0x6f, 0xe6, 0x6c, 0x18, 0x7a, - 0xef, 0x99, 0x6f, 0xe9, 0x3d, 0xad, 0xdf, 0xa0, 0x79, 0x21, 0xf9, 0x19, 0xec, 0x2f, 0x43, 0xf6, - 0x22, 0x08, 0xde, 0x9d, 0x39, 0xde, 0x7c, 0x15, 0xb2, 0xc8, 0x32, 0xf0, 0x03, 0xbd, 0xd2, 0x0f, - 0x64, 0x0c, 0x69, 0xd1, 0x91, 0xbc, 0x04, 0x73, 0x19, 0x44, 0x3c, 0xb7, 0x58, 0x75, 0xcb, 0xc5, - 0xd6, 0x3c, 0xc9, 0x03, 0x68, 0xbc, 0xf5, 0xe6, 0xec, 0xdc, 0x59, 0x30, 0xab, 0x86, 0xf9, 0x48, - 0xe6, 0x84, 0x80, 0xc1, 0x9d, 0x59, 0x64, 0xd5, 0x7b, 0x7a, 0xbf, 0x49, 0x71, 0x4c, 0xfa, 0x49, - 0x24, 0x5f, 0xaa, 0xaf, 0x58, 0x0d, 0x54, 0x17, 0xc5, 0xe4, 0x49, 0xba, 0xcf, 0xc4, 0xb4, 0x89, - 0xa6, 0x6b, 0x72, 0xf2, 0x04, 0xba, 0x79, 0x77, 0x0b, 0x84, 0xe5, 0xe7, 0x15, 0x4b, 0xa3, 0x05, - 0x0d, 0x79, 0x0a, 0xfb, 0x05, 0x7f, 0xab, 0x95, 0x18, 0x17, 0x55, 0x64, 0x00, 0x44, 0xf9, 0x4f, - 0xdc, 0x90, 0x31, 0x3f, 0xba, 0x0a, 0x78, 0x64, 0xb5, 0x7b, 0x7a, 0xbf, 0x4d, 0x4b, 0x34, 0xe4, - 0x19, 0x1c, 0xc4, 0x4b, 0x64, 0x1d, 0x3a, 0xe8, 0x50, 0xa6, 0xb2, 0xff, 0x11, 0x43, 0x4c, 0xc0, - 0x82, 0xfc, 0x04, 0x1a, 0x02, 0x18, 0xd3, 0x0f, 0x4b, 0x86, 0xf8, 0xea, 0x1e, 0xdb, 0x1b, 0x31, - 0x34, 0x18, 0x2b, 0x4b, 0x9a, 0xf8, 0x90, 0x4f, 0xc0, 0x88, 0x38, 0x5b, 0x5a, 0x95, 0x9e, 0xb6, - 0x11, 0x7f, 0x13, 0xce, 0x96, 0x14, 0xcd, 0xc8, 0x73, 0xa8, 0xbb, 0x81, 0xef, 0xb2, 0x25, 0x47, - 0xe0, 0xb5, 0x8e, 0x1f, 0x96, 0x7a, 0x9c, 0x4a, 0x1b, 0x1a, 0x1b, 0x93, 0x1f, 0x41, 0x23, 0x72, - 0x99, 0xef, 0x84, 0x5e, 0x60, 0x19, 0xe8, 0xf8, 0xdd, 0xf2, 0x4f, 0x29, 0x23, 0x9a, 0x98, 0x93, - 0xaf, 0xe0, 0x80, 0xa7, 0xd0, 0x8e, 0x0d, 0xac, 0x2a, 0xae, 0xd2, 0x2f, 0x5d, 0x65, 0xba, 0x6e, - 0x4f, 0xcb, 0x16, 0x91, 0xe1, 0x2c, 0x16, 0xcc, 0xe7, 0x08, 0xc6, 0xcd, 0xe1, 0xa0, 0x0d, 0x8d, - 0x8d, 0xc9, 0x33, 0xa8, 0xe2, 0x72, 0x56, 0x1d, 0xbd, 0x1e, 0x6c, 0xde, 0x05, 0x95, 0x86, 0x22, - 0xcf, 0x88, 0xed, 0xc6, 0x2d, 0x79, 0x9e, 0x3a, 0xb3, 0x48, 0xc2, 0xde, 0xfe, 0x06, 0x1a, 0xf1, - 0x61, 0x91, 0x06, 0x18, 0xe2, 0x04, 0xcc, 0x3d, 0xd2, 0x82, 0xba, 0xda, 0x8a, 0xa9, 0xc9, 0x09, - 0x66, 0xd7, 0xac, 0x90, 0x36, 0x34, 0xe2, 0xa0, 0x4c, 0x9d, 0x7c, 0x1b, 0x0e, 0x4a, 0x52, 0x60, - 0x1a, 0xa4, 0x09, 0x55, 0x54, 0x98, 0x55, 0xb1, 0xaa, 0xf8, 0x9e, 0x59, 0xb3, 0xff, 0x5c, 0x87, - 0x4e, 0x2e, 0xf9, 0xe2, 0xd2, 0xc5, 0xe9, 0xcf, 0xd7, 0xae, 0xa2, 0x98, 0x3c, 0x80, 0xda, 0x5b, - 0xc7, 0x9b, 0xb3, 0x4b, 0x04, 0x50, 0x03, 0xef, 0x84, 0x92, 0x90, 0x1f, 0x42, 0xc3, 0x0d, 0x7c, - 0xce, 0x6e, 0x78, 0x64, 0xe9, 0x77, 0x95, 0xb7, 0xc4, 0x94, 0xfc, 0x14, 0x3a, 0xf1, 0x57, 0xc6, - 0x58, 0x1a, 0x8d, 0xbb, 0x7c, 0xf3, 0xf6, 0xe4, 0x45, 0x72, 0xb9, 0x55, 0xd5, 0x51, 0x58, 0xb9, - 0xbb, 0x5c, 0x15, 0xfc, 0xb0, 0x8c, 0xe6, 0x0b, 0x98, 0x82, 0xc9, 0x36, 0x65, 0x34, 0xef, 0x58, - 0x5a, 0xdc, 0x8e, 0xa0, 0xc3, 0x6e, 0x98, 0xbb, 0xe2, 0x5e, 0xe0, 0x4f, 0xbd, 0x05, 0x43, 0x74, - 0xe8, 0x34, 0x2f, 0x24, 0x0f, 0xa1, 0x1e, 0xbd, 0xf3, 0x96, 0x4b, 0x76, 0x69, 0x35, 0x93, 0x24, - 0xc7, 0x22, 0xf2, 0x08, 0x40, 0x0c, 0x47, 0x61, 0x18, 0x84, 0x91, 0x2c, 0x63, 0x34, 0x23, 0x21, - 0x5d, 0xa8, 0x8c, 0x87, 0x56, 0x0b, 0x8f, 0xaf, 0x32, 0x1e, 0x8a, 0xf4, 0x72, 0xe6, 0x84, 0xc3, - 0xe0, 0xda, 0x17, 0xa8, 0x92, 0xb5, 0xe9, 0xf6, 0xf4, 0xe6, 0xec, 0x49, 0x1f, 0x8c, 0x68, 0xe9, - 0xf8, 0x56, 0x07, 0x33, 0x71, 0x58, 0xf4, 0x9b, 0x2c, 0x1d, 0x9f, 0xa2, 0x05, 0x19, 0xc3, 0x7e, - 0x12, 0xc9, 0x84, 0x3b, 0x7c, 0x15, 0x59, 0x5d, 0x2c, 0x51, 0x8f, 0x8b, 0x4e, 0xa3, 0xbc, 0x19, - 0x2d, 0xfa, 0x95, 0xb5, 0x81, 0xfd, 0xed, 0xdb, 0x80, 0xb9, 0x75, 0x1b, 0xb8, 0xb7, 0x4b, 0x1b, - 0x20, 0xbb, 0xb6, 0x81, 0x83, 0x5d, 0xdb, 0xc0, 0xe1, 0xe6, 0x36, 0xf0, 0x16, 0x0c, 0x91, 0x6a, - 0x72, 0x08, 0xd5, 0x88, 0x3b, 0x21, 0xc7, 0x1b, 0xaa, 0x53, 0x39, 0x21, 0x26, 0xe8, 0xcc, 0x97, - 0x97, 0x52, 0xa7, 0x62, 0x48, 0x1e, 0x42, 0x13, 0x55, 0xa7, 0x57, 0x4e, 0x88, 0xb5, 0x5b, 0xa7, - 0xa9, 0x80, 0x58, 0x50, 0x67, 0xfe, 0x25, 0xea, 0x0c, 0xd4, 0xc5, 0x53, 0xfb, 0x37, 0x60, 0x6d, - 0xaa, 0xa9, 0xb9, 0xaa, 0xae, 0xed, 0x56, 0xd5, 0x8f, 0xa0, 0x83, 0x85, 0x91, 0x06, 0xd7, 0x63, - 0xff, 0x92, 0xdd, 0xe0, 0x56, 0xab, 0x34, 0x2f, 0xb4, 0x7f, 0xaf, 0xc7, 0x74, 0x4a, 0x34, 0x9f, - 0x47, 0x00, 0x8e, 0xcb, 0x57, 0xce, 0x7c, 0xca, 0x6e, 0xb8, 0xaa, 0x48, 0x19, 0x89, 0xd0, 0x2f, - 0x9d, 0x30, 0x62, 0x97, 0xa8, 0xaf, 0x48, 0x7d, 0x2a, 0x21, 0xcf, 0xa1, 0xf9, 0x36, 0x74, 0x66, - 0xa2, 0x7e, 0xc6, 0x15, 0xc9, 0x2a, 0xee, 0xf7, 0x4c, 0x19, 0xd0, 0xd4, 0x54, 0x74, 0x20, 0xd1, - 0xfc, 0x12, 0x90, 0x52, 0x16, 0xad, 0xe6, 0x5c, 0xf5, 0xb1, 0xfe, 0xc6, 0x96, 0x59, 0xb0, 0xa7, - 0x65, 0x8b, 0x94, 0x01, 0xbb, 0xba, 0x3d, 0xb0, 0x6b, 0x1b, 0x80, 0x5d, 0x0e, 0xbf, 0xfa, 0xae, - 0xf0, 0x6b, 0x6c, 0x86, 0xdf, 0x3f, 0x35, 0x68, 0x67, 0x5b, 0x3d, 0xf9, 0x31, 0xb4, 0x54, 0xb3, - 0x17, 0xb1, 0x2b, 0x38, 0xdc, 0xc2, 0x27, 0xb2, 0xd6, 0x82, 0x06, 0x47, 0x58, 0x8c, 0xee, 0xa6, - 0xc1, 0x68, 0x47, 0x7e, 0x05, 0xf7, 0x95, 0x7f, 0xf1, 0x54, 0xf4, 0x1d, 0x4f, 0x65, 0xc3, 0x3a, - 0xf6, 0x63, 0x85, 0x3c, 0xd1, 0x24, 0x93, 0xe2, 0xad, 0xa5, 0xc5, 0xdb, 0xfe, 0xbb, 0x06, 0x8d, - 0x18, 0x2d, 0x64, 0x0c, 0xed, 0x18, 0x2f, 0x19, 0x2a, 0xf6, 0xd1, 0x26, 0x74, 0x25, 0x03, 0x64, - 0x63, 0x39, 0x57, 0xfc, 0x56, 0x8a, 0x5f, 0x1c, 0x93, 0xcf, 0xa0, 0xb9, 0x74, 0x42, 0x67, 0xc1, - 0x38, 0x0b, 0x55, 0x84, 0xeb, 0x39, 0x8a, 0x0d, 0x68, 0x6a, 0x6b, 0x7f, 0x0c, 0xed, 0xec, 0xa7, - 0xb0, 0xeb, 0xb3, 0x1b, 0x6e, 0xee, 0x91, 0x0e, 0x34, 0x13, 0x0f, 0x53, 0xb3, 0x7f, 0x57, 0xc9, - 0xcc, 0xc9, 0x97, 0xd0, 0x49, 0xd6, 0xc8, 0xc4, 0xf3, 0xf1, 0xc6, 0x6f, 0xa6, 0x23, 0x8c, 0x28, - 0xef, 0x2d, 0x6a, 0xd4, 0x7b, 0x67, 0xbe, 0x62, 0x2a, 0x26, 0x39, 0x11, 0x81, 0xfa, 0xe2, 0x19, - 0xa0, 0xcb, 0x40, 0xc5, 0x38, 0x25, 0x56, 0xc6, 0x96, 0xc4, 0xca, 0xfe, 0x0a, 0x3a, 0xb9, 0x6f, - 0x13, 0x80, 0x9a, 0x68, 0x1a, 0x9e, 0x2b, 0x09, 0xd3, 0xf0, 0x83, 0xef, 0x2c, 0x3c, 0xd7, 0xd4, - 0x08, 0x81, 0xae, 0x78, 0x95, 0x79, 0xce, 0xfc, 0xeb, 0x09, 0x0f, 0x3d, 0x7f, 0x66, 0x56, 0xc8, - 0x3d, 0xe8, 0xc4, 0x32, 0x49, 0x8c, 0xf4, 0x94, 0x23, 0x19, 0xb6, 0x9d, 0x60, 0x5c, 0xd2, 0xbe, - 0xf8, 0x68, 0xb4, 0xf4, 0x68, 0xec, 0x1b, 0x80, 0x74, 0x53, 0xe4, 0x33, 0xa8, 0x5f, 0x31, 0xe7, - 0x92, 0x85, 0xd1, 0xad, 0x05, 0x71, 0xaa, 0xaa, 0x1c, 0x8d, 0xad, 0xc9, 0x0f, 0xc0, 0x08, 0x83, - 0xeb, 0xf8, 0x02, 0xdc, 0xe1, 0x85, 0xa6, 0xf6, 0x47, 0x8a, 0xb6, 0xc5, 0x62, 0x91, 0x66, 0x97, - 0xcd, 0xe7, 0x31, 0x4c, 0xe5, 0xc4, 0xfe, 0x4b, 0x45, 0x55, 0xf0, 0x12, 0xf4, 0x93, 0xf3, 0x4c, - 0x8b, 0x56, 0x17, 0x48, 0xee, 0xfb, 0xa8, 0x74, 0x07, 0xc5, 0xcb, 0x53, 0x74, 0x2e, 0xe1, 0x5e, - 0x95, 0xff, 0x1d, 0xf7, 0xd2, 0xff, 0x5b, 0xee, 0x65, 0xa5, 0x0c, 0xca, 0xc0, 0xe7, 0x72, 0xc2, - 0x9e, 0x8e, 0xa0, 0xa3, 0x86, 0x94, 0x39, 0x51, 0xe0, 0x23, 0x55, 0x6c, 0xd2, 0xbc, 0xd0, 0xfe, - 0x77, 0x05, 0x0e, 0xcb, 0xe2, 0x27, 0xf7, 0x13, 0xfa, 0xab, 0xe1, 0xba, 0x31, 0xf5, 0x7d, 0x02, - 0x66, 0xc8, 0xdc, 0xe0, 0x3d, 0x0b, 0xc5, 0xd9, 0x20, 0x13, 0x93, 0x04, 0x99, 0xae, 0xc9, 0x89, - 0x0d, 0x6d, 0x26, 0x06, 0x31, 0xab, 0x90, 0xd7, 0x21, 0x27, 0x43, 0x92, 0xc7, 0x1d, 0xf7, 0xdd, - 0x34, 0x74, 0x5c, 0x79, 0x37, 0x04, 0xc9, 0x4b, 0x24, 0xa8, 0xc7, 0xe2, 0x3c, 0xb9, 0x0a, 0x38, - 0x36, 0x90, 0x36, 0xcd, 0x48, 0xd6, 0x89, 0x66, 0xad, 0x8c, 0x68, 0x5a, 0x50, 0x57, 0x49, 0x55, - 0x2c, 0x35, 0x9e, 0x92, 0x97, 0xd0, 0xc4, 0xfd, 0x60, 0x2d, 0x68, 0x60, 0x2d, 0x18, 0x6c, 0x03, - 0x90, 0xc1, 0x28, 0xf6, 0xa2, 0xe9, 0x02, 0xf6, 0x53, 0x68, 0x26, 0x72, 0x51, 0x87, 0x4e, 0x26, - 0x93, 0x11, 0x9d, 0x8e, 0x5f, 0x9d, 0x9b, 0x7b, 0xc4, 0x84, 0xf6, 0xeb, 0x11, 0x1d, 0x9f, 0x8d, - 0x4f, 0x4f, 0x50, 0xa2, 0xd9, 0x7f, 0xd0, 0xc0, 0x2c, 0x1e, 0x71, 0x21, 0x21, 0xda, 0x5a, 0x42, - 0x8a, 0x49, 0xad, 0x6c, 0x48, 0x6a, 0x9a, 0x34, 0xbd, 0x2c, 0x69, 0x79, 0x8a, 0x62, 0x94, 0x51, - 0x94, 0x3f, 0xd5, 0xd4, 0xf6, 0x26, 0x2b, 0x8f, 0x33, 0x85, 0x8b, 0x13, 0xf9, 0xe3, 0x47, 0xce, - 0xe4, 0x7d, 0x6c, 0xad, 0xb3, 0xde, 0xe4, 0x47, 0x91, 0xba, 0x4d, 0x59, 0x9f, 0xff, 0xd3, 0x9b, - 0x94, 0x02, 0xde, 0x28, 0x02, 0x5e, 0x6c, 0x3e, 0x3a, 0xc3, 0xe9, 0x69, 0xb0, 0xf2, 0x39, 0x5e, - 0xa5, 0x2a, 0x5d, 0x93, 0x6f, 0x09, 0xc6, 0x1e, 0xb4, 0xa2, 0x95, 0xeb, 0xb2, 0x28, 0xa2, 0x0e, - 0x97, 0x0f, 0xed, 0x0a, 0xcd, 0x8a, 0x84, 0x05, 0xf3, 0xdf, 0x7b, 0x61, 0xe0, 0xe3, 0x03, 0xbe, - 0x21, 0xff, 0xae, 0x65, 0x44, 0x49, 0xdb, 0x6e, 0xaa, 0x7a, 0x2d, 0x5a, 0x79, 0x0f, 0x5a, 0xcb, - 0x30, 0xf8, 0x86, 0xb9, 0x1c, 0xff, 0x41, 0x81, 0xf4, 0xca, 0x88, 0x04, 0x53, 0xe6, 0xde, 0x82, - 0x45, 0xdc, 0x59, 0x2c, 0xd5, 0xc3, 0x29, 0x15, 0x90, 0xa7, 0x70, 0x0f, 0x23, 0x9a, 0xc8, 0x0a, - 0x21, 0x43, 0x6d, 0x63, 0xa8, 0xeb, 0x8a, 0x32, 0x7a, 0xd7, 0xd9, 0x9e, 0xde, 0x75, 0xb7, 0x7e, - 0xb7, 0xec, 0xef, 0xf2, 0x6e, 0x31, 0x77, 0x7d, 0xb7, 0xdc, 0xdb, 0x95, 0x38, 0x92, 0xcd, 0xc4, - 0xf1, 0xaf, 0x3a, 0xec, 0x17, 0x80, 0x8f, 0xf4, 0x26, 0x16, 0xdd, 0xce, 0x1c, 0x85, 0x4f, 0x6a, - 0x8b, 0xe5, 0x5b, 0xbd, 0x28, 0xe4, 0x41, 0xa8, 0x57, 0x44, 0x4e, 0x28, 0x36, 0x19, 0x0b, 0xb2, - 0xf8, 0xd4, 0xd1, 0xb6, 0x4c, 0xb5, 0x11, 0xe6, 0xcf, 0xe0, 0x40, 0x8e, 0x86, 0x0e, 0x77, 0xe2, - 0xbe, 0x2b, 0x19, 0x7b, 0x95, 0x96, 0xa9, 0xb6, 0xaf, 0xbc, 0x71, 0x83, 0xaa, 0xe7, 0x1b, 0xd4, - 0x31, 0x1c, 0xc6, 0x1b, 0xcc, 0x21, 0xae, 0x81, 0x9b, 0x2f, 0xd5, 0xa1, 0x8f, 0x9c, 0xe7, 0xb7, - 0xd9, 0xc4, 0x6d, 0x96, 0xea, 0xc8, 0x27, 0x50, 0x63, 0xe9, 0x2f, 0x84, 0xd6, 0xf1, 0xb7, 0xd6, - 0x9e, 0xe8, 0x42, 0x4b, 0x95, 0x91, 0xfd, 0x37, 0x0d, 0xaa, 0xb2, 0x7d, 0x7d, 0x0a, 0x06, 0x4f, - 0x19, 0xe2, 0xe3, 0x52, 0xb7, 0x4c, 0x1b, 0x40, 0xe3, 0xf8, 0x2f, 0x30, 0xd2, 0xbf, 0x4a, 0xfa, - 0x17, 0x18, 0x29, 0xe0, 0x23, 0x80, 0xb9, 0xe7, 0xb3, 0xf3, 0xd5, 0xe2, 0x8d, 0x22, 0xbb, 0x55, - 0x9a, 0x91, 0x64, 0xbb, 0x94, 0x6c, 0x84, 0xf1, 0xd4, 0x3e, 0xce, 0xf6, 0x95, 0x7d, 0x68, 0x5d, - 0x9c, 0xd0, 0xc9, 0xe8, 0xeb, 0x11, 0xa5, 0xaf, 0xa8, 0xb9, 0x47, 0x0e, 0xc1, 0x7c, 0x7d, 0xf2, - 0x72, 0x3c, 0xc4, 0xbe, 0xa2, 0xa4, 0x9a, 0xfd, 0x5b, 0x0d, 0xba, 0x09, 0x3b, 0x7a, 0x8d, 0xbc, - 0x14, 0x5f, 0xca, 0x6a, 0xa2, 0x5a, 0x4b, 0x2a, 0x20, 0xcf, 0xe1, 0x7e, 0x42, 0x6e, 0xbd, 0x5f, - 0xb3, 0xcb, 0xc4, 0x4f, 0x05, 0xb2, 0x41, 0xab, 0x1e, 0xa7, 0x52, 0x23, 0x5f, 0x9f, 0xf2, 0x71, - 0xaa, 0x24, 0x4f, 0xbe, 0x80, 0xfd, 0xc2, 0x5f, 0x10, 0x11, 0xc2, 0xf9, 0xab, 0xe9, 0xe8, 0x97, - 0xa3, 0xd3, 0x5f, 0x4c, 0x47, 0x43, 0x73, 0x4f, 0x50, 0xdb, 0x0b, 0xd1, 0x2c, 0x87, 0xa6, 0x26, - 0xc6, 0x67, 0x27, 0xe3, 0x97, 0xa3, 0xa1, 0x59, 0x11, 0x34, 0x77, 0xf2, 0xf3, 0xf1, 0xc5, 0xc5, - 0x68, 0x68, 0xea, 0x9f, 0x7f, 0x4f, 0x3c, 0x8d, 0x16, 0x03, 0x7e, 0x15, 0xac, 0x66, 0x57, 0xfc, - 0x3a, 0x08, 0xdf, 0x45, 0xf2, 0x50, 0xfe, 0x58, 0xe9, 0x7e, 0x81, 0x87, 0x13, 0xd7, 0x91, 0x37, - 0x35, 0xbc, 0x49, 0x9f, 0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0x28, 0x8b, 0x9e, 0xb9, 0xd2, 0x18, - 0x00, 0x00, + 0x19, 0x95, 0x4d, 0x84, 0xf6, 0x66, 0xe9, 0xf4, 0xd4, 0x78, 0x7a, 0x63, 0x77, 0x5b, 0xdd, 0xe5, + 0x64, 0x16, 0xee, 0x79, 0x00, 0x6e, 0x78, 0x07, 0x24, 0xae, 0x78, 0x01, 0x24, 0x24, 0x6e, 0x90, + 0xf2, 0x08, 0x88, 0x47, 0x41, 0x75, 0xaa, 0xfa, 0xd7, 0xed, 0x19, 0x1b, 0x71, 0xb1, 0x77, 0x55, + 0xe7, 0xa7, 0x7e, 0x4e, 0x7d, 0x75, 0xce, 0x57, 0x05, 0x10, 0x2d, 0x99, 0x3b, 0x58, 0x86, 0x01, + 0x0f, 0x48, 0x77, 0xe6, 0xac, 0x66, 0x6c, 0xb0, 0x60, 0x51, 0xe4, 0xcc, 0x58, 0x64, 0xff, 0xc7, + 0x80, 0xe6, 0x85, 0xd0, 0x4c, 0x96, 0xcc, 0x25, 0x3d, 0x68, 0x09, 0xdb, 0x17, 0xcc, 0xb9, 0xf4, + 0xfc, 0x99, 0xa5, 0xf5, 0xb4, 0x7e, 0x93, 0x66, 0x45, 0xe4, 0xc7, 0x50, 0xf5, 0x38, 0x5b, 0x44, + 0x56, 0xa5, 0xa7, 0xf7, 0x5b, 0xc7, 0x3f, 0x18, 0xe4, 0xc7, 0x1b, 0xe0, 0x58, 0x63, 0xce, 0x16, + 0x54, 0xda, 0x91, 0x23, 0xe8, 0x78, 0xd1, 0xd4, 0x79, 0x33, 0x67, 0xc3, 0xd0, 0x7b, 0xc7, 0x7c, + 0x4b, 0xef, 0x69, 0xfd, 0x06, 0xcd, 0x0b, 0xc9, 0xaf, 0x60, 0x7f, 0x19, 0xb2, 0x17, 0x41, 0xf0, + 0xf6, 0xcc, 0xf1, 0xe6, 0xab, 0x90, 0x45, 0x96, 0x81, 0x13, 0xf4, 0x4a, 0x27, 0xc8, 0x18, 0xd2, + 0xa2, 0x23, 0x79, 0x09, 0xe6, 0x32, 0x88, 0x78, 0x6e, 0xb0, 0xea, 0x96, 0x83, 0xad, 0x79, 0x92, + 0x07, 0xd0, 0xb8, 0xf2, 0xe6, 0xec, 0xdc, 0x59, 0x30, 0xab, 0x86, 0xf1, 0x48, 0xfa, 0x84, 0x80, + 0xc1, 0x9d, 0x59, 0x64, 0xd5, 0x7b, 0x7a, 0xbf, 0x49, 0xb1, 0x4d, 0xfa, 0xc9, 0x4e, 0xbe, 0x54, + 0xb3, 0x58, 0x0d, 0x54, 0x17, 0xc5, 0xe4, 0x49, 0xba, 0xce, 0xc4, 0xb4, 0x89, 0xa6, 0x6b, 0x72, + 0xf2, 0x04, 0xba, 0x79, 0x77, 0x0b, 0x84, 0xe5, 0xe7, 0x15, 0x4b, 0xa3, 0x05, 0x0d, 0x79, 0x0a, + 0xfb, 0x05, 0x7f, 0xab, 0x95, 0x18, 0x17, 0x55, 0x64, 0x00, 0x44, 0xf9, 0x4f, 0xdc, 0x90, 0x31, + 0x3f, 0xba, 0x0e, 0x78, 0x64, 0xb5, 0x7b, 0x7a, 0xbf, 0x4d, 0x4b, 0x34, 0xe4, 0x19, 0x1c, 0xc4, + 0x43, 0x64, 0x1d, 0x3a, 0xe8, 0x50, 0xa6, 0xb2, 0x3f, 0xc4, 0x10, 0x13, 0xb0, 0x20, 0xbf, 0x80, + 0x86, 0x00, 0xc6, 0xf4, 0xdb, 0x25, 0x43, 0x7c, 0x75, 0x8f, 0xed, 0x8d, 0x18, 0x1a, 0x8c, 0x95, + 0x25, 0x4d, 0x7c, 0xc8, 0x27, 0x60, 0x44, 0x9c, 0x2d, 0xad, 0x4a, 0x4f, 0xdb, 0x88, 0xbf, 0x09, + 0x67, 0x4b, 0x8a, 0x66, 0xe4, 0x39, 0xd4, 0xdd, 0xc0, 0x77, 0xd9, 0x92, 0x23, 0xf0, 0x5a, 0xc7, + 0x0f, 0x4b, 0x3d, 0x4e, 0xa5, 0x0d, 0x8d, 0x8d, 0xc9, 0xcf, 0xa0, 0x11, 0xb9, 0xcc, 0x77, 0x42, + 0x2f, 0xb0, 0x0c, 0x74, 0xfc, 0x61, 0xf9, 0x54, 0xca, 0x88, 0x26, 0xe6, 0xe4, 0x2b, 0x38, 0xe0, + 0x29, 0xb4, 0x63, 0x03, 0xab, 0x8a, 0xa3, 0xf4, 0x4b, 0x47, 0x99, 0xae, 0xdb, 0xd3, 0xb2, 0x41, + 0xe4, 0x76, 0x16, 0x0b, 0xe6, 0x73, 0x04, 0xe3, 0xe6, 0xed, 0xa0, 0x0d, 0x8d, 0x8d, 0xc9, 0x33, + 0xa8, 0xe2, 0x70, 0x56, 0x1d, 0xbd, 0x1e, 0x6c, 0x5e, 0x05, 0x95, 0x86, 0x22, 0xce, 0x88, 0xed, + 0xc6, 0x2d, 0x71, 0x9e, 0x3a, 0xb3, 0x48, 0xc2, 0xde, 0xfe, 0x06, 0x1a, 0xf1, 0x61, 0x91, 0x06, + 0x18, 0xe2, 0x04, 0xcc, 0x3d, 0xd2, 0x82, 0xba, 0x5a, 0x8a, 0xa9, 0xc9, 0x0e, 0x46, 0xd7, 0xac, + 0x90, 0x36, 0x34, 0xe2, 0x4d, 0x99, 0x3a, 0xf9, 0x3e, 0x1c, 0x94, 0x84, 0xc0, 0x34, 0x48, 0x13, + 0xaa, 0xa8, 0x30, 0xab, 0x62, 0x54, 0x31, 0x9f, 0x59, 0xb3, 0xff, 0x56, 0x87, 0x4e, 0x2e, 0xf8, + 0xe2, 0xd2, 0xc5, 0xe1, 0xcf, 0xe7, 0xae, 0xa2, 0x98, 0x3c, 0x80, 0xda, 0x95, 0xe3, 0xcd, 0xd9, + 0x25, 0x02, 0xa8, 0x81, 0x77, 0x42, 0x49, 0xc8, 0x4f, 0xa1, 0xe1, 0x06, 0x3e, 0x67, 0x37, 0x3c, + 0xb2, 0xf4, 0xbb, 0xd2, 0x5b, 0x62, 0x4a, 0x7e, 0x09, 0x9d, 0x78, 0x96, 0x31, 0xa6, 0x46, 0xe3, + 0x2e, 0xdf, 0xbc, 0x3d, 0x79, 0x91, 0x5c, 0x6e, 0x95, 0x75, 0x14, 0x56, 0xee, 0x4e, 0x57, 0x05, + 0x3f, 0x4c, 0xa3, 0xf9, 0x04, 0xa6, 0x60, 0xb2, 0x4d, 0x1a, 0xcd, 0x3b, 0x96, 0x26, 0xb7, 0x23, + 0xe8, 0xb0, 0x1b, 0xe6, 0xae, 0xb8, 0x17, 0xf8, 0x53, 0x6f, 0xc1, 0x10, 0x1d, 0x3a, 0xcd, 0x0b, + 0xc9, 0x43, 0xa8, 0x47, 0x6f, 0xbd, 0xe5, 0x92, 0x5d, 0x5a, 0xcd, 0x24, 0xc8, 0xb1, 0x88, 0x3c, + 0x02, 0x10, 0xcd, 0x51, 0x18, 0x06, 0x61, 0x24, 0xd3, 0x18, 0xcd, 0x48, 0x48, 0x17, 0x2a, 0xe3, + 0xa1, 0xd5, 0xc2, 0xe3, 0xab, 0x8c, 0x87, 0x22, 0xbc, 0x9c, 0x39, 0xe1, 0x30, 0x78, 0xef, 0x0b, + 0x54, 0xc9, 0xdc, 0x74, 0x7b, 0x78, 0x73, 0xf6, 0xa4, 0x0f, 0x46, 0xb4, 0x74, 0x7c, 0xab, 0x83, + 0x91, 0x38, 0x2c, 0xfa, 0x4d, 0x96, 0x8e, 0x4f, 0xd1, 0x82, 0x8c, 0x61, 0x3f, 0xd9, 0xc9, 0x84, + 0x3b, 0x7c, 0x15, 0x59, 0x5d, 0x4c, 0x51, 0x8f, 0x8b, 0x4e, 0xa3, 0xbc, 0x19, 0x2d, 0xfa, 0x95, + 0x95, 0x81, 0xfd, 0xed, 0xcb, 0x80, 0xb9, 0x75, 0x19, 0xb8, 0xb7, 0x4b, 0x19, 0x20, 0xbb, 0x96, + 0x81, 0x83, 0x5d, 0xcb, 0xc0, 0xe1, 0xe6, 0x32, 0x70, 0x05, 0x86, 0x08, 0x35, 0x39, 0x84, 0x6a, + 0xc4, 0x9d, 0x90, 0xe3, 0x0d, 0xd5, 0xa9, 0xec, 0x10, 0x13, 0x74, 0xe6, 0xcb, 0x4b, 0xa9, 0x53, + 0xd1, 0x24, 0x0f, 0xa1, 0x89, 0xaa, 0xd3, 0x6b, 0x27, 0xc4, 0xdc, 0xad, 0xd3, 0x54, 0x40, 0x2c, + 0xa8, 0x33, 0xff, 0x12, 0x75, 0x06, 0xea, 0xe2, 0xae, 0xfd, 0x07, 0xb0, 0x36, 0xe5, 0xd4, 0x5c, + 0x56, 0xd7, 0x76, 0xcb, 0xea, 0x47, 0xd0, 0xc1, 0xc4, 0x48, 0x83, 0xf7, 0x63, 0xff, 0x92, 0xdd, + 0xe0, 0x52, 0xab, 0x34, 0x2f, 0xb4, 0xff, 0xac, 0xc7, 0x74, 0x4a, 0x14, 0x9f, 0x47, 0x00, 0x8e, + 0xcb, 0x57, 0xce, 0x7c, 0xca, 0x6e, 0xb8, 0xca, 0x48, 0x19, 0x89, 0xd0, 0x2f, 0x9d, 0x30, 0x62, + 0x97, 0xa8, 0xaf, 0x48, 0x7d, 0x2a, 0x21, 0xcf, 0xa1, 0x79, 0x15, 0x3a, 0x33, 0x91, 0x3f, 0xe3, + 0x8c, 0x64, 0x15, 0xd7, 0x7b, 0xa6, 0x0c, 0x68, 0x6a, 0x2a, 0x2a, 0x90, 0x28, 0x7e, 0x09, 0x48, + 0x29, 0x8b, 0x56, 0x73, 0xae, 0xea, 0x58, 0x7f, 0x63, 0xc9, 0x2c, 0xd8, 0xd3, 0xb2, 0x41, 0xca, + 0x80, 0x5d, 0xdd, 0x1e, 0xd8, 0xb5, 0x0d, 0xc0, 0x2e, 0x87, 0x5f, 0x7d, 0x57, 0xf8, 0x35, 0x36, + 0xc3, 0xef, 0xdf, 0x1a, 0xb4, 0xb3, 0xa5, 0x9e, 0xfc, 0x1c, 0x5a, 0xaa, 0xd8, 0x8b, 0xbd, 0x2b, + 0x38, 0xdc, 0xc2, 0x27, 0xb2, 0xd6, 0x82, 0x06, 0x47, 0x98, 0x8c, 0xee, 0xa6, 0xc1, 0x68, 0x47, + 0x7e, 0x07, 0xf7, 0x95, 0x7f, 0xf1, 0x54, 0xf4, 0x1d, 0x4f, 0x65, 0xc3, 0x38, 0xf6, 0x63, 0x85, + 0x3c, 0x51, 0x24, 0x93, 0xe4, 0xad, 0xa5, 0xc9, 0xdb, 0xfe, 0x97, 0x06, 0x8d, 0x18, 0x2d, 0x64, + 0x0c, 0xed, 0x18, 0x2f, 0x19, 0x2a, 0xf6, 0xd1, 0x26, 0x74, 0x25, 0x0d, 0x64, 0x63, 0x39, 0x57, + 0x9c, 0x2b, 0xc5, 0x2f, 0xb6, 0xc9, 0x67, 0xd0, 0x5c, 0x3a, 0xa1, 0xb3, 0x60, 0x9c, 0x85, 0x6a, + 0x87, 0xeb, 0x31, 0x8a, 0x0d, 0x68, 0x6a, 0x6b, 0x7f, 0x0c, 0xed, 0xec, 0x54, 0x58, 0xf5, 0xd9, + 0x0d, 0x37, 0xf7, 0x48, 0x07, 0x9a, 0x89, 0x87, 0xa9, 0xd9, 0x7f, 0xaa, 0x64, 0xfa, 0xe4, 0x4b, + 0xe8, 0x24, 0x63, 0x64, 0xf6, 0xf3, 0xf1, 0xc6, 0x39, 0xd3, 0x16, 0xee, 0x28, 0xef, 0x2d, 0x72, + 0xd4, 0x3b, 0x67, 0xbe, 0x62, 0x6a, 0x4f, 0xb2, 0x23, 0x36, 0xea, 0x8b, 0x67, 0x80, 0x2e, 0x37, + 0x2a, 0xda, 0x29, 0xb1, 0x32, 0xb6, 0x24, 0x56, 0xf6, 0x57, 0xd0, 0xc9, 0xcd, 0x4d, 0x00, 0x6a, + 0xa2, 0x68, 0x78, 0xae, 0x24, 0x4c, 0xc3, 0x6f, 0x7d, 0x67, 0xe1, 0xb9, 0xa6, 0x46, 0x08, 0x74, + 0xc5, 0xab, 0xcc, 0x73, 0xe6, 0x5f, 0x4f, 0x78, 0xe8, 0xf9, 0x33, 0xb3, 0x42, 0xee, 0x41, 0x27, + 0x96, 0x49, 0x62, 0xa4, 0xa7, 0x1c, 0xc9, 0xb0, 0xed, 0x04, 0xe3, 0x92, 0xf6, 0xc5, 0x47, 0xa3, + 0xa5, 0x47, 0x63, 0xdf, 0x00, 0xa4, 0x8b, 0x22, 0x9f, 0x41, 0xfd, 0x9a, 0x39, 0x97, 0x2c, 0x8c, + 0x6e, 0x4d, 0x88, 0x53, 0x95, 0xe5, 0x68, 0x6c, 0x4d, 0x7e, 0x02, 0x46, 0x18, 0xbc, 0x8f, 0x2f, + 0xc0, 0x1d, 0x5e, 0x68, 0x6a, 0x7f, 0xa4, 0x68, 0x5b, 0x2c, 0x16, 0x61, 0x76, 0xd9, 0x7c, 0x1e, + 0xc3, 0x54, 0x76, 0xec, 0xbf, 0x57, 0x54, 0x06, 0x2f, 0x41, 0x3f, 0x39, 0xcf, 0x94, 0x68, 0x75, + 0x81, 0xe4, 0xba, 0x8f, 0x4a, 0x57, 0x50, 0xbc, 0x3c, 0x45, 0xe7, 0x12, 0xee, 0x55, 0xf9, 0xff, + 0x71, 0x2f, 0xfd, 0x7f, 0xe5, 0x5e, 0x56, 0xca, 0xa0, 0x0c, 0x7c, 0x2e, 0x27, 0xec, 0xe9, 0x08, + 0x3a, 0xaa, 0x49, 0x99, 0x13, 0x05, 0x3e, 0x52, 0xc5, 0x26, 0xcd, 0x0b, 0xed, 0x0f, 0x3a, 0x1c, + 0x96, 0xed, 0x9f, 0xdc, 0x4f, 0xe8, 0xaf, 0x86, 0xe3, 0xc6, 0xd4, 0xf7, 0x09, 0x98, 0x21, 0x73, + 0x83, 0x77, 0x2c, 0x14, 0x67, 0x83, 0x4c, 0x4c, 0x12, 0x64, 0xba, 0x26, 0x27, 0x36, 0xb4, 0x99, + 0x68, 0xc4, 0xac, 0x42, 0x5e, 0x87, 0x9c, 0x0c, 0x49, 0x1e, 0x77, 0xdc, 0xb7, 0xd3, 0xd0, 0x71, + 0xe5, 0xdd, 0x10, 0x24, 0x2f, 0x91, 0x10, 0x1b, 0x20, 0xc2, 0xe4, 0x3c, 0xb9, 0x0e, 0x38, 0xee, + 0xa1, 0x8d, 0xbc, 0x24, 0x23, 0x5d, 0x27, 0x9b, 0xb5, 0x32, 0xb2, 0x69, 0x41, 0x5d, 0x05, 0x56, + 0x31, 0xd5, 0xb8, 0x4b, 0x5e, 0x42, 0x13, 0xd7, 0x84, 0xf9, 0xa0, 0x81, 0xf9, 0x60, 0xb0, 0x0d, + 0x48, 0x06, 0xa3, 0xd8, 0x8b, 0xa6, 0x03, 0x90, 0xa7, 0x70, 0xef, 0x4a, 0x9e, 0x4e, 0x5a, 0x55, + 0x90, 0xde, 0xb6, 0xe9, 0xba, 0x02, 0x3f, 0x52, 0x32, 0x75, 0x09, 0xb0, 0x2e, 0x65, 0x45, 0xf6, + 0x53, 0x68, 0x26, 0xf3, 0x88, 0xdc, 0x76, 0x32, 0x99, 0x8c, 0xe8, 0x74, 0xfc, 0xea, 0xdc, 0xdc, + 0x23, 0x26, 0xb4, 0x5f, 0x8f, 0xe8, 0xf8, 0x6c, 0x7c, 0x7a, 0x82, 0x12, 0xcd, 0xfe, 0xa0, 0x81, + 0x59, 0x84, 0x4d, 0x21, 0xc8, 0x5a, 0x49, 0x90, 0xf3, 0x07, 0x55, 0x29, 0x39, 0xa8, 0xfc, 0x41, + 0xe8, 0x9b, 0x0e, 0x22, 0x4f, 0x7d, 0x8c, 0x12, 0xea, 0x53, 0x1e, 0xa0, 0xea, 0x86, 0x00, 0xd9, + 0x7f, 0xad, 0xa9, 0x0d, 0x4d, 0x56, 0x1e, 0x67, 0x0a, 0x9d, 0x27, 0xf2, 0xfb, 0x49, 0xf6, 0x64, + 0x56, 0x68, 0xad, 0x73, 0xef, 0xe4, 0xbb, 0x4a, 0xdd, 0xe9, 0xac, 0xcf, 0x77, 0xf4, 0x3e, 0xa7, + 0xd7, 0xce, 0x28, 0x5e, 0x3b, 0xb1, 0xf8, 0xe8, 0x0c, 0xbb, 0xa7, 0xc1, 0xca, 0x97, 0x21, 0xab, + 0xd2, 0x35, 0xf9, 0x96, 0xd7, 0x41, 0x00, 0x6f, 0xe5, 0xba, 0x2c, 0x8a, 0xa8, 0xc3, 0xe5, 0x73, + 0xbf, 0x42, 0xb3, 0x22, 0x61, 0xc1, 0xfc, 0x77, 0x5e, 0x18, 0xf8, 0xf8, 0x8d, 0xd0, 0x90, 0x7f, + 0x7c, 0x19, 0x51, 0x42, 0x1e, 0x9a, 0xaa, 0x6a, 0x08, 0x42, 0xd1, 0x83, 0xd6, 0x32, 0x0c, 0xbe, + 0x61, 0x2e, 0xc7, 0x9f, 0x30, 0x90, 0x5e, 0x19, 0x91, 0xe0, 0xeb, 0xdc, 0x5b, 0xb0, 0x88, 0x3b, + 0x8b, 0xa5, 0x7a, 0xbe, 0xa5, 0x02, 0x81, 0x0e, 0xdc, 0xd1, 0x44, 0xe6, 0x29, 0xb9, 0xd5, 0x36, + 0x6e, 0x75, 0x5d, 0x51, 0x46, 0x32, 0x3b, 0xdb, 0x93, 0xcc, 0xee, 0xd6, 0xaf, 0xa7, 0xfd, 0x5d, + 0x5e, 0x4f, 0xe6, 0xae, 0xaf, 0xa7, 0x7b, 0xbb, 0xd2, 0x57, 0xb2, 0x99, 0xbe, 0xfe, 0x43, 0x87, + 0xfd, 0x02, 0xf0, 0x91, 0x64, 0xc5, 0xa2, 0xdb, 0xf9, 0xab, 0xf0, 0x49, 0x6d, 0xb1, 0x88, 0xa8, + 0x77, 0x8d, 0x3c, 0x08, 0xf5, 0x96, 0xc9, 0x09, 0xc5, 0x22, 0x63, 0x41, 0x16, 0x9f, 0x3a, 0xda, + 0x96, 0xa9, 0x36, 0xc2, 0xfc, 0x19, 0x1c, 0xc8, 0xd6, 0xd0, 0xe1, 0x4e, 0x5c, 0xfd, 0xe5, 0xbb, + 0xa1, 0x4a, 0xcb, 0x54, 0xdb, 0xe7, 0xfe, 0xb8, 0x4c, 0xd6, 0xf3, 0x65, 0xf2, 0x18, 0x0e, 0xe3, + 0x05, 0xe6, 0x10, 0xd7, 0xc0, 0xc5, 0x97, 0xea, 0xd0, 0x47, 0xf6, 0xf3, 0xcb, 0x6c, 0xe2, 0x32, + 0x4b, 0x75, 0xe4, 0x13, 0xa8, 0xb1, 0xf4, 0x23, 0xa3, 0x75, 0xfc, 0xbd, 0xb5, 0x8f, 0x02, 0xa1, + 0xa5, 0xca, 0xc8, 0xfe, 0xa7, 0x06, 0x55, 0x59, 0x44, 0x3f, 0x05, 0x83, 0xa7, 0x3c, 0xf5, 0x71, + 0xa9, 0x5b, 0xa6, 0x10, 0xa1, 0x71, 0xfc, 0x17, 0x8d, 0x24, 0xb4, 0x92, 0xfe, 0x45, 0x23, 0x11, + 0x7d, 0x04, 0x30, 0xf7, 0x7c, 0x76, 0xbe, 0x5a, 0xbc, 0x51, 0x94, 0xbb, 0x4a, 0x33, 0x92, 0x6c, + 0x9d, 0x94, 0xe5, 0x38, 0xee, 0xda, 0xc7, 0xd9, 0x4a, 0xb4, 0x0f, 0xad, 0x8b, 0x13, 0x3a, 0x19, + 0x7d, 0x3d, 0xa2, 0xf4, 0x15, 0x35, 0xf7, 0xc8, 0x21, 0x98, 0xaf, 0x4f, 0x5e, 0x8e, 0x87, 0x58, + 0x89, 0x94, 0x54, 0xb3, 0xff, 0xa8, 0x41, 0x37, 0xe1, 0x68, 0xaf, 0x91, 0x1d, 0xe3, 0x7b, 0x5d, + 0x75, 0x54, 0x31, 0x4a, 0x05, 0xe4, 0x39, 0xdc, 0x4f, 0x28, 0xb6, 0xf7, 0x7b, 0x76, 0x99, 0xf8, + 0xa9, 0x8d, 0x6c, 0xd0, 0xaa, 0x27, 0xb2, 0xd4, 0xc8, 0x37, 0xb0, 0x7c, 0x22, 0x2b, 0xc9, 0x93, + 0x2f, 0x60, 0xbf, 0xf0, 0x17, 0x23, 0xb6, 0x70, 0xfe, 0x6a, 0x3a, 0xfa, 0xed, 0xe8, 0xf4, 0x37, + 0xd3, 0xd1, 0xd0, 0xdc, 0x13, 0x04, 0xfb, 0x42, 0x94, 0xd7, 0xa1, 0xa9, 0x89, 0xf6, 0xd9, 0xc9, + 0xf8, 0xe5, 0x68, 0x68, 0x56, 0x04, 0xd9, 0x9e, 0xfc, 0x7a, 0x7c, 0x71, 0x31, 0x1a, 0x9a, 0xfa, + 0xe7, 0x3f, 0x12, 0x0f, 0xb4, 0xc5, 0x80, 0x5f, 0x07, 0xab, 0xd9, 0x35, 0x7f, 0x1f, 0x84, 0x6f, + 0x23, 0x79, 0x28, 0x7f, 0xa9, 0x74, 0xbf, 0xc0, 0xc3, 0x89, 0xf3, 0xc8, 0x9b, 0x1a, 0xde, 0xa4, + 0x4f, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x06, 0x49, 0x75, 0x8d, 0x58, 0x19, 0x00, 0x00, } diff --git a/generator/_testdata/dummyReportTheme/views/partials.tmpl b/generator/_testdata/dummyReportTheme/views/partials.tmpl index e728a3b..56299aa 100644 --- a/generator/_testdata/dummyReportTheme/views/partials.tmpl +++ b/generator/_testdata/dummyReportTheme/views/partials.tmpl @@ -76,6 +76,7 @@ {{template "suiteMessagesDiv" .}} + {{template "suiteScreenshotsDiv" .}} {{end}} @@ -100,6 +101,23 @@ {{end}} {{end}} + +/* Show all screenshots that the user may have introduces using the Gauge.captureScreenshot API in before and after suite hooks*/ +{{define "suiteScreenshotsDiv"}} + {{if or (gt (len .PreHookScreenshots) 0) (gt (len .PostHookScreenshots) 0)}} +
+ {{if gt (len .PreHookScreenshots) 0}} +
Before Suite Screenshots
+ {{template "screenshotDiv" .PreHookScreenshots}} + {{end}} + {{if gt (len .PostHookScreenshots) 0}} +
After Suite Screenshots
+ {{template "screenshotDiv" .PostHookScreenshots}} + {{end}} +
+ {{end}} +{{end}} + /* The sidebar resides on the side , and holds the list of specs that were part of the execution. Users may click to view individual spec's output, search for a spec by either tags or spec heading. Users are also given an autocomplete suggestion. */ @@ -141,16 +159,18 @@ [Show details] {{end}} @@ -195,6 +215,23 @@ {{end}} {{end}} +/* Show all screenshots that the user may have introduce using the Gauge.captureScreenshot API */ +{{define "screenshotDiv"}} + {{ if gt (len .) 0}} +
+ {{range .}} + {{if .}} +
+ + + +
+ {{end}} + {{end}} +
+ {{end}} +{{end}} + /* Lists reason(s) for a spec being skipped in an execution */ {{define "skippedReasonDiv"}}
@@ -354,12 +391,21 @@ {{define "stepFailureDiv"}}
-
-

-
{{.ErrorMessage | escapeHTML | encodeNewLine}}
-

-
{{.StackTrace | escapeHTML | encodeNewLine}}
+
+

+
{{.ErrorMessage | escapeHTML | encodeNewLine}}
+

+
{{.StackTrace | escapeHTML | encodeNewLine}}
+
+ {{ if .FailureScreenshot}} +
+
+ + + +
+ {{end}}
{{end}} @@ -391,30 +437,24 @@ /* container for a Step */ {{define "step"}} {{template "stepStartDiv" .}} - {{template "stepBodyDiv" .}} + {{template "messageDiv" .PreHookMessages}} + {{template "screenshotDiv" .PreHookScreenshots}} {{if .BeforeStepHookFailure}} {{ template "hookFailureDiv" .BeforeStepHookFailure }} {{end}} + {{template "stepBodyDiv" .}} {{with .Result}} {{if and (and (eq .Status "fail") (ne .ErrorMessage "")) (ne .StackTrace "") }} {{template "stepFailureDiv" .}} {{end }} - {{ if .Screenshot}} -
- {{range .Screenshot}} -
- - - -
- {{end}} -
- {{end}} + {{template "messageDiv" .Messages}} + {{template "screenshotDiv" .Screenshots}} {{end}} {{if .AfterStepHookFailure}} {{ template "hookFailureDiv" .AfterStepHookFailure }} {{end}} - {{template "messageDiv" .Result.Messages}} + {{template "messageDiv" .PostHookMessages}} + {{template "screenshotDiv" .PostHookScreenshots}}
{{with .Result}} {{if (and (eq .Status "skip") (ne .SkippedReason "")) }} @@ -454,6 +494,7 @@ {{template "tagsDiv" .}} {{template "messageDiv" .PreHookMessages}} + {{template "screenshotDiv" .PreHookScreenshots}} {{if .BeforeScenarioHookFailure}} {{template "hookFailureDiv" .BeforeScenarioHookFailure}} {{end}} @@ -473,6 +514,7 @@ {{end}} {{template "messageDiv" .PostHookMessages}} + {{template "screenshotDiv" .PostHookScreenshots}} {{if .AfterScenarioHookFailure }} {{template "hookFailureDiv" .AfterScenarioHookFailure}} {{end}} @@ -491,6 +533,11 @@ {{else}} {{template "messageDiv" .PreHookMessages}} + {{if gt (len .PreHookScreenshots) 0}} +
+ {{template "screenshotDiv" .PreHookScreenshots}} +
+ {{end}} {{range $index, $beforeHook := .BeforeSpecHookFailures}} {{template "hookFailureDiv" $beforeHook}} {{end}} @@ -505,6 +552,11 @@ {{template "messageDiv" .PostHookMessages}} + {{if gt (len .PostHookScreenshots) 0}} +
+ {{template "screenshotDiv" .PostHookScreenshots}} +
+ {{end}} {{range $index, $afterHook := .AfterSpecHookFailures}} {{template "hookFailureDiv" $afterHook}} {{end}} diff --git a/generator/_testdata/expectedE2E/simpleSuiteRes/failing_specification_1.html b/generator/_testdata/expectedE2E/simpleSuiteRes/failing_specification_1.html index cbe7f58..6449654 100644 --- a/generator/_testdata/expectedE2E/simpleSuiteRes/failing_specification_1.html +++ b/generator/_testdata/expectedE2E/simpleSuiteRes/failing_specification_1.html @@ -191,13 +191,13 @@

com.thoughtworks.gauge.GaugeRuntime.main(GaugeRuntime.java:37) - - -
-
- - - +
+
+ + + +
+
diff --git a/generator/_testdata/integration/concept_fail.html b/generator/_testdata/integration/concept_fail.html index c093497..1143f05 100644 --- a/generator/_testdata/integration/concept_fail.html +++ b/generator/_testdata/integration/concept_fail.html @@ -242,13 +242,13 @@

com.thoughtworks.gauge.GaugeRuntime.main(GaugeRuntime.java:37) - - -
-
- - - +
+
+ + + +
+
diff --git a/generator/_testdata/integration/multiple_scenarios.html b/generator/_testdata/integration/multiple_scenarios.html index 28c4c7c..1d58db4 100644 --- a/generator/_testdata/integration/multiple_scenarios.html +++ b/generator/_testdata/integration/multiple_scenarios.html @@ -188,16 +188,16 @@

com.thoughtworks.gauge.GaugeRuntime.main(GaugeRuntime.java:37) +
+
+ + + +
+
-
-
- - - -
-
- + diff --git a/generator/_testdata/integration/step_fail.html b/generator/_testdata/integration/step_fail.html index e5fee96..2f58fed 100644 --- a/generator/_testdata/integration/step_fail.html +++ b/generator/_testdata/integration/step_fail.html @@ -175,18 +175,19 @@

com.thoughtworks.gauge.processor.SuiteExecutionStartingProcessor.process(SuiteExecutionStartingProcessor.java:26)
com.thoughtworks.gauge.connection.MessageDispatcher.dispatchMessages(MessageDispatcher.java:72)
com.thoughtworks.gauge.GaugeRuntime.main(GaugeRuntime.java:37) - + + + +
+
+ + + +
-
-
- - - -
-
- + diff --git a/generator/generate.go b/generator/generate.go index 44ab3df..9d9ad28 100644 --- a/generator/generate.go +++ b/generator/generate.go @@ -179,22 +179,23 @@ func (s *step) Kind() tokenKind { } type result struct { - Status status `json:"Status"` - StackTrace string `json:"StackTrace"` - Screenshot []string `json:"Screenshot"` - ErrorMessage string `json:"ErrorMessage"` - ExecutionTime string `json:"ExecutionTime"` - SkippedReason string `json:"SkippedReason"` - Messages []string `json:"Messages"` - ErrorType errorType `json:"ErrorType"` + Status status `json:"Status"` + StackTrace string `json:"StackTrace"` + FailureScreenshot string `json:"Screenshot"` + ErrorMessage string `json:"ErrorMessage"` + ExecutionTime string `json:"ExecutionTime"` + SkippedReason string `json:"SkippedReason"` + Messages []string `json:"Messages"` + ErrorType errorType `json:"ErrorType"` + Screenshots []string `json:"Screenshots"` } type hookFailure struct { - HookName string `json:"HookName"` - ErrMsg string `json:"ErrMsg"` - Screenshot []string `json:"Screenshot"` - StackTrace string `json:"StackTrace"` - TableRowIndex int32 `json:"TableRowIndex"` + HookName string `json:"HookName"` + ErrMsg string `json:"ErrMsg"` + FailureScreenshot string `json:"Screenshot"` + StackTrace string `json:"StackTrace"` + TableRowIndex int32 `json:"TableRowIndex"` } type concept struct { diff --git a/generator/generate_test.go b/generator/generate_test.go index 03a9813..487ae3b 100644 --- a/generator/generate_test.go +++ b/generator/generate_test.go @@ -170,10 +170,9 @@ var wHookFailureWithoutScreenhotDiv = `
` @@ -541,10 +540,10 @@ func testReportGen(reportGenTests []reportGenTest, t *testing.T) { func newHookFailure(name, errMsg, screenshot, stacktrace string) *hookFailure { return &hookFailure{ - HookName: name, - ErrMsg: errMsg, - Screenshot: []string{screenshot}, - StackTrace: stacktrace, + HookName: name, + ErrMsg: errMsg, + FailureScreenshot: screenshot, + StackTrace: stacktrace, } } diff --git a/generator/integration_test.go b/generator/integration_test.go index 17fdd7c..2ee17ba 100644 --- a/generator/integration_test.go +++ b/generator/integration_test.go @@ -143,9 +143,9 @@ var scenarioWithAfterHookFail = &gm.ProtoScenario{ newStepItem(false, false, []*gm.Fragment{newTextFragment("Some step")}), }, PostHookFailure: &gm.ProtoHookFailure{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }, } @@ -157,9 +157,9 @@ var scenarioWithBeforeHookFail = &gm.ProtoScenario{ newStepItem(false, true, []*gm.Fragment{newTextFragment("Some step")}), }, PreHookFailure: &gm.ProtoHookFailure{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }, } @@ -171,14 +171,14 @@ var scenarioWithBeforeAndAfterHookFail = &gm.ProtoScenario{ newStepItem(false, true, []*gm.Fragment{newTextFragment("Some step")}), }, PreHookFailure: &gm.ProtoHookFailure{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }, PostHookFailure: &gm.ProtoHookFailure{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }, } @@ -189,7 +189,7 @@ var stepWithCustomScreenshot = &gm.ProtoItem{ ExecutionResult: &gm.ProtoExecutionResult{ Failed: false, ExecutionTime: 211316, - ScreenShot: [][]byte{[]byte(newScreenshot()), []byte(newScreenshot())}, + Screenshots: [][]byte{[]byte(newScreenshot()), []byte(newScreenshot())}, }, }, Fragments: []*gm.Fragment{newTextFragment("This is a step with custom screenshot")}, @@ -205,9 +205,9 @@ var stepWithBeforeHookFail = &gm.ProtoItem{ ExecutionTime: 211316, }, PreHookFailure: &gm.ProtoHookFailure{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }, }, Fragments: []*gm.Fragment{newTextFragment("This is a failing step")}, @@ -223,9 +223,9 @@ var stepWithAfterHookFail = &gm.ProtoItem{ ExecutionTime: 211316, }, PostHookFailure: &gm.ProtoHookFailure{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }, }, Fragments: []*gm.Fragment{newTextFragment("This is a failing step")}, @@ -241,14 +241,14 @@ var stepWithBeforeAndAfterHookFail = &gm.ProtoItem{ ExecutionTime: 211316, }, PreHookFailure: &gm.ProtoHookFailure{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }, PostHookFailure: &gm.ProtoHookFailure{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }, }, Fragments: []*gm.Fragment{newTextFragment("This is a failing step")}, @@ -260,11 +260,11 @@ var failedStep = &gm.ProtoItem{ Step: &gm.ProtoStep{ StepExecutionResult: &gm.ProtoStepExecutionResult{ ExecutionResult: &gm.ProtoExecutionResult{ - Failed: true, - ExecutionTime: 211316, - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + Failed: true, + ExecutionTime: 211316, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }, }, Fragments: []*gm.Fragment{newTextFragment("This is a failing step")}, @@ -566,9 +566,9 @@ var failSpecResWithAfterSpecFailure = &gm.ProtoSpecResult{ newScenarioItem(scenario2), }, PostHookFailures: []*gm.ProtoHookFailure{{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }}, }, } @@ -600,9 +600,9 @@ var failSpecResWithBeforeSpecFailure = &gm.ProtoSpecResult{ newScenarioItem(scenario2), }, PreHookFailures: []*gm.ProtoHookFailure{{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }}, }, } @@ -647,9 +647,9 @@ var failSpecResWithBeforeSpecFailureWithTableDriven = &gm.ProtoSpecResult{ }, PreHookFailures: []*gm.ProtoHookFailure{ {ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, - TableRowIndex: int32(1)}, + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), + TableRowIndex: int32(1)}, }, }, } @@ -693,7 +693,7 @@ var failSpecResWithAfterSpecFailureWithTableDriven = &gm.ProtoSpecResult{ }, }, PostHookFailures: []*gm.ProtoHookFailure{ - {ErrorMessage: "java.lang.RuntimeException", StackTrace: newStackTrace(), ScreenShot: [][]byte{[]byte(newScreenshot())}, TableRowIndex: int32(0)}, + {ErrorMessage: "java.lang.RuntimeException", StackTrace: newStackTrace(), FailureScreenshot: []byte(newScreenshot()), TableRowIndex: int32(0)}, }, }, } @@ -724,14 +724,14 @@ var failSpecResWithBeforeAfterSpecFailure = &gm.ProtoSpecResult{ newScenarioItem(scenario2), }, PreHookFailures: []*gm.ProtoHookFailure{{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }}, PostHookFailures: []*gm.ProtoHookFailure{{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), }}, }, } @@ -784,9 +784,9 @@ var suiteResWithCustomScreenshots = newSuiteResult(false, 0, 0, 100, nil, nil, p func newProtoHookFailure() *gm.ProtoHookFailure { return &gm.ProtoHookFailure{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), } } diff --git a/generator/transform.go b/generator/transform.go index 6854481..65258f0 100644 --- a/generator/transform.go +++ b/generator/transform.go @@ -168,13 +168,11 @@ func toHookFailure(failure *gm.ProtoHookFailure, hookName string) *hookFailure { } result := &hookFailure{ - ErrMsg: failure.GetErrorMessage(), - HookName: hookName, - StackTrace: failure.GetStackTrace(), - TableRowIndex: failure.TableRowIndex, - } - for _, s := range failure.GetScreenShot() { - result.Screenshot = append(result.Screenshot, base64.StdEncoding.EncodeToString(s)) + ErrMsg: failure.GetErrorMessage(), + HookName: hookName, + StackTrace: failure.GetStackTrace(), + TableRowIndex: failure.TableRowIndex, + FailureScreenshot: base64.StdEncoding.EncodeToString(failure.GetFailureScreenshot()), } return result } @@ -458,16 +456,16 @@ func toComment(protoComment *gm.ProtoComment) *comment { func toStep(protoStep *gm.ProtoStep) *step { res := protoStep.GetStepExecutionResult().GetExecutionResult() result := &result{ - Status: getStepStatus(protoStep.GetStepExecutionResult()), - StackTrace: res.GetStackTrace(), - ErrorMessage: res.GetErrorMessage(), - ExecutionTime: formatTime(res.GetExecutionTime()), - Messages: res.GetMessage(), + Status: getStepStatus(protoStep.GetStepExecutionResult()), + StackTrace: res.GetStackTrace(), + ErrorMessage: res.GetErrorMessage(), + ExecutionTime: formatTime(res.GetExecutionTime()), + Messages: res.GetMessage(), + FailureScreenshot: base64.StdEncoding.EncodeToString(res.GetFailureScreenshot()), } - for _, s := range res.GetScreenShot() { - result.Screenshot = append(result.Screenshot, base64.StdEncoding.EncodeToString(s)) + for _, s := range res.GetScreenshots() { + result.Screenshots = append(result.Screenshots, base64.StdEncoding.EncodeToString(s)) } - if protoStep.GetStepExecutionResult().GetSkipped() { result.SkippedReason = protoStep.GetStepExecutionResult().GetSkippedReason() } diff --git a/generator/transform_test.go b/generator/transform_test.go index f3bb1f6..4162aa1 100644 --- a/generator/transform_test.go +++ b/generator/transform_test.go @@ -284,14 +284,14 @@ var specResWithSpecHookFailure = &gm.ProtoSpecResult{ SpecHeading: "specRes3", Tags: []string{"tag1"}, PreHookFailures: []*gm.ProtoHookFailure{{ - ErrorMessage: "err", - StackTrace: "Stacktrace", - ScreenShot: [][]byte{[]byte("Screenshot")}, + ErrorMessage: "err", + StackTrace: "Stacktrace", + FailureScreenshot: []byte("Screenshot"), }}, PostHookFailures: []*gm.ProtoHookFailure{{ - ErrorMessage: "err", - StackTrace: "Stacktrace", - ScreenShot: [][]byte{[]byte("Screenshot")}, + ErrorMessage: "err", + StackTrace: "Stacktrace", + FailureScreenshot: []byte("Screenshot"), }}, }, } @@ -363,14 +363,14 @@ var scnWithHookFailure = &gm.ProtoScenario{ newStepItem(true, false, []*gm.Fragment{newTextFragment("Step1")}), }, PreHookFailure: &gm.ProtoHookFailure{ - ErrorMessage: "err", - StackTrace: "Stacktrace", - ScreenShot: [][]byte{[]byte("Screenshot")}, + ErrorMessage: "err", + StackTrace: "Stacktrace", + FailureScreenshot: []byte("Screenshot"), }, PostHookFailure: &gm.ProtoHookFailure{ - ErrorMessage: "err", - StackTrace: "Stacktrace", - ScreenShot: [][]byte{[]byte("Screenshot")}, + ErrorMessage: "err", + StackTrace: "Stacktrace", + FailureScreenshot: []byte("Screenshot"), }, } @@ -421,7 +421,7 @@ var protoStepWithScreenshots = &gm.ProtoStep{ StepExecutionResult: &gm.ProtoStepExecutionResult{ ExecutionResult: &gm.ProtoExecutionResult{ ExecutionTime: 211316, - ScreenShot: [][]byte{[]byte("screenshot1"), []byte("screenshot2")}, + Screenshots: [][]byte{[]byte("screenshot1"), []byte("screenshot2")}, }, SkippedReason: "Step impl not found", Skipped: true, @@ -508,17 +508,17 @@ var protoStepWithAfterHookFailure = &gm.ProtoStep{ ExecutionTime: 211316, }, PostHookFailure: &gm.ProtoHookFailure{ - ErrorMessage: "err", - StackTrace: "Stacktrace", - ScreenShot: [][]byte{[]byte("Screenshot")}, + ErrorMessage: "err", + StackTrace: "Stacktrace", + FailureScreenshot: []byte("Screenshot"), }, }, } var failedHookFailure = &gm.ProtoHookFailure{ - ErrorMessage: "java.lang.RuntimeException", - StackTrace: newStackTrace(), - ScreenShot: [][]byte{[]byte(newScreenshot())}, + ErrorMessage: "java.lang.RuntimeException", + StackTrace: newStackTrace(), + FailureScreenshot: []byte(newScreenshot()), } func TestToOverview(t *testing.T) { @@ -847,14 +847,14 @@ func TestToSpecWithDataTableExecutionStatusFail(t *testing.T) { } func TestToSpecWithBeforeHookFailure(t *testing.T) { - want := []*hookFailure{{ErrMsg: "err", HookName: "Before Spec", Screenshot: []string{"U2NyZWVuc2hvdA=="}, StackTrace: "Stacktrace"}} + want := []*hookFailure{{ErrMsg: "err", HookName: "Before Spec", FailureScreenshot: "U2NyZWVuc2hvdA==", StackTrace: "Stacktrace"}} got := toSpec(specResWithSpecHookFailure).BeforeSpecHookFailures checkEqual(t, "", want, got) } func TestToSpecWithAfterHookFailure(t *testing.T) { - want := []*hookFailure{{ErrMsg: "err", HookName: "After Spec", Screenshot: []string{"U2NyZWVuc2hvdA=="}, StackTrace: "Stacktrace", TableRowIndex: 0}} + want := []*hookFailure{{ErrMsg: "err", HookName: "After Spec", FailureScreenshot: "U2NyZWVuc2hvdA==", StackTrace: "Stacktrace", TableRowIndex: 0}} got := toSpec(specResWithSpecHookFailure).AfterSpecHookFailures checkEqual(t, "", want, got) @@ -1213,7 +1213,7 @@ func TestToStepCollectsScreenshot(t *testing.T) { Status: skip, ExecutionTime: "00:03:31", SkippedReason: "Step impl not found", - Screenshot: []string{"c2NyZWVuc2hvdDE=", "c2NyZWVuc2hvdDI="}, + Screenshots: []string{"c2NyZWVuc2hvdDE=", "c2NyZWVuc2hvdDI="}, }, } diff --git a/regenerate/_testdata/last_run_result.json b/regenerate/_testdata/last_run_result.json index 8cdf41a..91c9d32 100644 --- a/regenerate/_testdata/last_run_result.json +++ b/regenerate/_testdata/last_run_result.json @@ -194,7 +194,7 @@ ], "stepExecutionResult": { "executionResult": { - "screenShot":[ + "screenshots":[ "c2NyZWVuc2hvdDE=", "c2NyZWVuc2hvdDI=" ] diff --git a/themes/default/assets/css/style.css b/themes/default/assets/css/style.css index 08cb1db..bdf31bd 100644 --- a/themes/default/assets/css/style.css +++ b/themes/default/assets/css/style.css @@ -1084,6 +1084,7 @@ footer p { flex-wrap: wrap; width: 100%; margin-top: 10px; + margin-left: 10px; } .scenario-container .screenshot { diff --git a/themes/default/views/partials.tmpl b/themes/default/views/partials.tmpl index 7a165d9..56299aa 100644 --- a/themes/default/views/partials.tmpl +++ b/themes/default/views/partials.tmpl @@ -162,7 +162,15 @@
{{.StackTrace | escapeHTML | encodeNewLine}}
- {{template "screenshotDiv" .Screenshot}} + {{if .FailureScreenshot}} +
+
+ + + +
+
+ {{end}} {{end}} @@ -383,12 +391,21 @@ {{define "stepFailureDiv"}}
-
-

-
{{.ErrorMessage | escapeHTML | encodeNewLine}}
-

-
{{.StackTrace | escapeHTML | encodeNewLine}}
+
+

+
{{.ErrorMessage | escapeHTML | encodeNewLine}}
+

+
{{.StackTrace | escapeHTML | encodeNewLine}}
+
+ {{ if .FailureScreenshot}} +
+
+ + + +
+ {{end}}
{{end}} @@ -430,7 +447,8 @@ {{if and (and (eq .Status "fail") (ne .ErrorMessage "")) (ne .StackTrace "") }} {{template "stepFailureDiv" .}} {{end }} - {{template "screenshotDiv" .Screenshot}} + {{template "messageDiv" .Messages}} + {{template "screenshotDiv" .Screenshots}} {{end}} {{if .AfterStepHookFailure}} {{ template "hookFailureDiv" .AfterStepHookFailure }}