@@ -784,9 +784,13 @@ def test_parse_highlighted_events_fault_tolerance(event):
784
784
785
785
def test_as_trace_item_context_click_event ():
786
786
event = {
787
+ "type" : 5 ,
787
788
"data" : {
789
+ "tag" : "breadcrumb" ,
788
790
"payload" : {
789
791
"timestamp" : 1674298825.403 ,
792
+ "type" : "default" ,
793
+ "category" : "ui.click" ,
790
794
"message" : "div#hello.hello.world" ,
791
795
"data" : {
792
796
"node" : {
@@ -806,11 +810,11 @@ def test_as_trace_item_context_click_event():
806
810
}
807
811
},
808
812
"url" : "https://example.com/form" ,
809
- }
810
- }
813
+ },
814
+ },
811
815
}
812
816
813
- result = as_trace_item_context (EventType . CLICK , event )
817
+ result = as_trace_item_context (which ( event ) , event )
814
818
assert result is not None
815
819
assert result ["timestamp" ] == 1674298825.403
816
820
assert result ["attributes" ]["category" ] == "ui.click"
@@ -834,39 +838,50 @@ def test_as_trace_item_context_click_event():
834
838
835
839
def test_as_trace_item_context_click_event_missing_node ():
836
840
event = {
841
+ "type" : 5 ,
837
842
"data" : {
843
+ "tag" : "breadcrumb" ,
838
844
"payload" : {
839
845
"timestamp" : 1674298825.403 ,
846
+ "type" : "default" ,
847
+ "category" : "ui.click" ,
840
848
"message" : "div#hello.hello.world" ,
841
849
"data" : {},
842
850
"url" : "https://example.com/form" ,
843
- }
844
- }
851
+ },
852
+ },
845
853
}
846
854
847
- result = as_trace_item_context (EventType . CLICK , event )
855
+ result = as_trace_item_context (which ( event ) , event )
848
856
assert result is None
849
857
850
858
851
859
def test_as_trace_item_context_dead_click_event ():
852
860
event = {
861
+ "type" : 5 ,
853
862
"data" : {
863
+ "tag" : "breadcrumb" ,
854
864
"payload" : {
865
+ "type" : "default" ,
866
+ "category" : "ui.slowClickDetected" ,
855
867
"timestamp" : 1674298825.403 ,
856
868
"message" : "button.slow" ,
857
869
"data" : {
870
+ "endReason" : "timeout" ,
871
+ "timeAfterClickMs" : 7000 ,
872
+ "clickCount" : 3 ,
858
873
"node" : {
859
874
"id" : 456 ,
860
- "tagName" : "button " ,
875
+ "tagName" : "a " ,
861
876
"textContent" : "Slow button" ,
862
877
"attributes" : {},
863
- }
878
+ },
864
879
},
865
- }
866
- }
880
+ },
881
+ },
867
882
}
868
883
869
- result = as_trace_item_context (EventType . DEAD_CLICK , event )
884
+ result = as_trace_item_context (which ( event ) , event )
870
885
assert result is not None
871
886
assert result ["attributes" ]["is_dead" ] is True
872
887
assert result ["attributes" ]["is_rage" ] is False
@@ -875,23 +890,30 @@ def test_as_trace_item_context_dead_click_event():
875
890
876
891
def test_as_trace_item_context_rage_click_event ():
877
892
event = {
893
+ "type" : 5 ,
878
894
"data" : {
895
+ "tag" : "breadcrumb" ,
879
896
"payload" : {
897
+ "type" : "default" ,
898
+ "category" : "ui.slowClickDetected" ,
880
899
"timestamp" : 1674298825.403 ,
881
- "message" : "button.rage " ,
900
+ "message" : "button.slow " ,
882
901
"data" : {
902
+ "endReason" : "timeout" ,
903
+ "timeAfterClickMs" : 7000 ,
904
+ "clickCount" : 5 ,
883
905
"node" : {
884
- "id" : 789 ,
885
- "tagName" : "button " ,
886
- "textContent" : "Rage button" ,
906
+ "id" : 456 ,
907
+ "tagName" : "a " ,
908
+ "textContent" : "Slow button" ,
887
909
"attributes" : {},
888
- }
910
+ },
889
911
},
890
- }
891
- }
912
+ },
913
+ },
892
914
}
893
915
894
- result = as_trace_item_context (EventType . RAGE_CLICK , event )
916
+ result = as_trace_item_context (which ( event ) , event )
895
917
assert result is not None
896
918
assert result ["attributes" ]["is_dead" ] is True
897
919
assert result ["attributes" ]["is_rage" ] is True
@@ -900,15 +922,20 @@ def test_as_trace_item_context_rage_click_event():
900
922
901
923
def test_as_trace_item_context_navigation_event ():
902
924
event = {
925
+ "type" : 5 ,
926
+ "timestamp" : 1753710793872 ,
903
927
"data" : {
928
+ "tag" : "breadcrumb" ,
904
929
"payload" : {
905
930
"timestamp" : 1674298825.0 ,
931
+ "type" : "default" ,
932
+ "category" : "navigation" ,
906
933
"data" : {"from" : "/old-page" , "to" : "/new-page" },
907
- }
908
- }
934
+ },
935
+ },
909
936
}
910
937
911
- result = as_trace_item_context (EventType . NAVIGATION , event )
938
+ result = as_trace_item_context (which ( event ) , event )
912
939
assert result is not None
913
940
assert result ["timestamp" ] == 1674298825.0
914
941
assert result ["attributes" ]["category" ] == "navigation"
@@ -919,15 +946,20 @@ def test_as_trace_item_context_navigation_event():
919
946
920
947
def test_as_trace_item_context_navigation_event_missing_optional_fields ():
921
948
event = {
949
+ "type" : 5 ,
950
+ "timestamp" : 1753710793872 ,
922
951
"data" : {
952
+ "tag" : "breadcrumb" ,
923
953
"payload" : {
924
954
"timestamp" : 1674298825.0 ,
955
+ "type" : "default" ,
956
+ "category" : "navigation" ,
925
957
"data" : {},
926
- }
927
- }
958
+ },
959
+ },
928
960
}
929
961
930
- result = as_trace_item_context (EventType . NAVIGATION , event )
962
+ result = as_trace_item_context (which ( event ) , event )
931
963
assert result is not None
932
964
assert result ["attributes" ]["category" ] == "navigation"
933
965
assert "from" not in result ["attributes" ]
@@ -937,8 +969,12 @@ def test_as_trace_item_context_navigation_event_missing_optional_fields():
937
969
938
970
def test_as_trace_item_context_resource_fetch_event ():
939
971
event = {
972
+ "type" : 5 ,
973
+ "timestamp" : 1753710794.0346 ,
940
974
"data" : {
975
+ "tag" : "performanceSpan" ,
941
976
"payload" : {
977
+ "op" : "resource.fetch" ,
942
978
"startTimestamp" : 1674298825.0 ,
943
979
"endTimestamp" : 1674298825.0 ,
944
980
"description" : "https://sentry.io/" ,
@@ -948,11 +984,11 @@ def test_as_trace_item_context_resource_fetch_event():
948
984
"method" : "GET" ,
949
985
"statusCode" : 200 ,
950
986
},
951
- }
952
- }
987
+ },
988
+ },
953
989
}
954
990
955
- result = as_trace_item_context (EventType . RESOURCE_FETCH , event )
991
+ result = as_trace_item_context (which ( event ) , event )
956
992
assert result is not None
957
993
assert result ["timestamp" ] == 1674298825.0
958
994
assert result ["attributes" ]["category" ] == "resource.fetch"
@@ -964,8 +1000,12 @@ def test_as_trace_item_context_resource_fetch_event():
964
1000
965
1001
def test_as_trace_item_context_resource_xhr_event ():
966
1002
event = {
1003
+ "type" : 5 ,
1004
+ "timestamp" : 1753710794.0346 ,
967
1005
"data" : {
1006
+ "tag" : "performanceSpan" ,
968
1007
"payload" : {
1008
+ "op" : "resource.xhr" ,
969
1009
"startTimestamp" : 1674298825.0 ,
970
1010
"endTimestamp" : 1674298825.0 ,
971
1011
"description" : "https://sentry.io/" ,
@@ -975,11 +1015,11 @@ def test_as_trace_item_context_resource_xhr_event():
975
1015
"request" : {"size" : 512 },
976
1016
"response" : {"size" : 1024 },
977
1017
},
978
- }
979
- }
1018
+ },
1019
+ },
980
1020
}
981
1021
982
- result = as_trace_item_context (EventType . RESOURCE_XHR , event )
1022
+ result = as_trace_item_context (which ( event ) , event )
983
1023
assert result is not None
984
1024
assert result ["attributes" ]["category" ] == "resource.xhr"
985
1025
assert result ["attributes" ]["request_size" ] == 512
@@ -1011,8 +1051,12 @@ def test_as_trace_item_context_resource_no_sizes():
1011
1051
1012
1052
def test_as_trace_item_context_resource_script_event ():
1013
1053
event = {
1054
+ "type" : 5 ,
1055
+ "timestamp" : 1753710794.0346 ,
1014
1056
"data" : {
1057
+ "tag" : "performanceSpan" ,
1015
1058
"payload" : {
1059
+ "op" : "resource.script" ,
1016
1060
"startTimestamp" : 1674298825.0 ,
1017
1061
"endTimestamp" : 1674298825.0 ,
1018
1062
"description" : "https://sentry.io/" ,
@@ -1022,11 +1066,11 @@ def test_as_trace_item_context_resource_script_event():
1022
1066
"decodedBodySize" : 45 ,
1023
1067
"encodedBodySize" : 55 ,
1024
1068
},
1025
- }
1026
- }
1069
+ },
1070
+ },
1027
1071
}
1028
1072
1029
- result = as_trace_item_context (EventType . RESOURCE_SCRIPT , event )
1073
+ result = as_trace_item_context (which ( event ) , event )
1030
1074
assert result is not None
1031
1075
assert result ["attributes" ]["category" ] == "resource.script"
1032
1076
assert result ["attributes" ]["size" ] == 10
@@ -1039,8 +1083,12 @@ def test_as_trace_item_context_resource_script_event():
1039
1083
1040
1084
def test_as_trace_item_context_resource_image_event ():
1041
1085
event = {
1086
+ "type" : 5 ,
1087
+ "timestamp" : 1753710794.0346 ,
1042
1088
"data" : {
1089
+ "tag" : "performanceSpan" ,
1043
1090
"payload" : {
1091
+ "op" : "resource.img" ,
1044
1092
"startTimestamp" : 1674298825.0 ,
1045
1093
"endTimestamp" : 1674298825.0 ,
1046
1094
"description" : "https://sentry.io/" ,
@@ -1050,11 +1098,11 @@ def test_as_trace_item_context_resource_image_event():
1050
1098
"decodedBodySize" : 45 ,
1051
1099
"encodedBodySize" : 55 ,
1052
1100
},
1053
- }
1054
- }
1101
+ },
1102
+ },
1055
1103
}
1056
1104
1057
- result = as_trace_item_context (EventType . RESOURCE_IMAGE , event )
1105
+ result = as_trace_item_context (which ( event ) , event )
1058
1106
assert result is not None
1059
1107
assert result ["attributes" ]["category" ] == "resource.img"
1060
1108
assert result ["attributes" ]["size" ] == 10
@@ -1067,16 +1115,21 @@ def test_as_trace_item_context_resource_image_event():
1067
1115
1068
1116
def test_as_trace_item_context_lcp_event ():
1069
1117
event = {
1118
+ "type" : 5 ,
1119
+ "timestamp" : 1753712471.43 ,
1070
1120
"data" : {
1121
+ "tag" : "performanceSpan" ,
1071
1122
"payload" : {
1123
+ "op" : "web-vital" ,
1124
+ "description" : "largest-contentful-paint" ,
1072
1125
"startTimestamp" : 1674298825.0 ,
1073
1126
"endTimestamp" : 1674298825.0 ,
1074
1127
"data" : {"rating" : "good" , "size" : 1024 , "value" : 1500 },
1075
- }
1076
- }
1128
+ },
1129
+ },
1077
1130
}
1078
1131
1079
- result = as_trace_item_context (EventType . LCP , event )
1132
+ result = as_trace_item_context (which ( event ) , event )
1080
1133
assert result is not None
1081
1134
assert result ["timestamp" ] == 1674298825.0
1082
1135
assert result ["attributes" ]["category" ] == "web-vital.lcp"
@@ -1089,16 +1142,21 @@ def test_as_trace_item_context_lcp_event():
1089
1142
1090
1143
def test_as_trace_item_context_fcp_event ():
1091
1144
event = {
1145
+ "type" : 5 ,
1146
+ "timestamp" : 1753712471.43 ,
1092
1147
"data" : {
1148
+ "tag" : "performanceSpan" ,
1093
1149
"payload" : {
1150
+ "op" : "web-vital" ,
1151
+ "description" : "first-contentful-paint" ,
1094
1152
"startTimestamp" : 1674298825.0 ,
1095
1153
"endTimestamp" : 1674298825.0 ,
1096
1154
"data" : {"rating" : "needs-improvement" , "size" : 512 , "value" : 2000 },
1097
- }
1098
- }
1155
+ },
1156
+ },
1099
1157
}
1100
1158
1101
- result = as_trace_item_context (EventType . FCP , event )
1159
+ result = as_trace_item_context (which ( event ) , event )
1102
1160
assert result is not None
1103
1161
assert result ["attributes" ]["category" ] == "web-vital.fcp"
1104
1162
assert result ["attributes" ]["duration" ] == 0
@@ -1131,7 +1189,7 @@ def test_as_trace_item_context_cls_event():
1131
1189
},
1132
1190
},
1133
1191
}
1134
- result = as_trace_item_context (EventType . CLS , event )
1192
+ result = as_trace_item_context (which ( event ) , event )
1135
1193
assert result is not None
1136
1194
assert result ["attributes" ]["category" ] == "web-vital.cls"
1137
1195
assert result ["attributes" ]["duration" ] == 0
@@ -1169,8 +1227,10 @@ def test_as_trace_item_context_mutations():
1169
1227
1170
1228
def test_as_trace_item_context_options ():
1171
1229
event = {
1172
- "timestamp" : 1674298825507 ,
1230
+ "type" : 5 ,
1231
+ "timestamp" : 1753710752516 ,
1173
1232
"data" : {
1233
+ "tag" : "options" ,
1174
1234
"payload" : {
1175
1235
"shouldRecordCanvas" : True ,
1176
1236
"sessionSampleRate" : 0.1 ,
@@ -1184,13 +1244,13 @@ def test_as_trace_item_context_options():
1184
1244
"networkCaptureBodies" : False ,
1185
1245
"networkRequestHasHeaders" : True ,
1186
1246
"networkResponseHasHeaders" : False ,
1187
- }
1247
+ },
1188
1248
},
1189
1249
}
1190
1250
1191
- result = as_trace_item_context (EventType . OPTIONS , event )
1251
+ result = as_trace_item_context (which ( event ) , event )
1192
1252
assert result is not None
1193
- assert result ["timestamp" ] == 1674298825.507 # timestamp is divided by 1000
1253
+ assert result ["timestamp" ] == 1753710752.516 # timestamp is divided by 1000
1194
1254
assert result ["attributes" ]["category" ] == "sdk.options"
1195
1255
assert result ["attributes" ]["shouldRecordCanvas" ] is True
1196
1256
assert result ["attributes" ]["sessionSampleRate" ] == 0.1
@@ -1229,7 +1289,7 @@ def test_as_trace_item_context_memory():
1229
1289
},
1230
1290
}
1231
1291
1232
- result = as_trace_item_context (EventType . MEMORY , event )
1292
+ result = as_trace_item_context (which ( event ) , event )
1233
1293
assert result is not None
1234
1294
assert result ["timestamp" ] == 1753467523.594
1235
1295
assert result ["attributes" ]["category" ] == "memory"
0 commit comments