Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ref(grouping): Improve representation of grouping objects #79231

Draft
wants to merge 4 commits into
base: kmclb-use-full-save-pipeline-for-new-config-variant-tests
Choose a base branch
from

Conversation

lobsterkatie
Copy link
Member

This makes two small changes to the way objects used in our grouping algorithm represent and then eventually jsonify themselves.

  • For GroupingComponent.description, fall back to the id value rather than using the generic value "others".
  • Add the original text of a fingerprinting rule to its dictified version. This results in a more human-readable way to display which rule matched a given event.

@github-actions github-actions bot added the Scope: Backend Automatically applied to PRs that change backend components label Oct 16, 2024
Copy link

codecov bot commented Oct 16, 2024

❌ 11 Tests Failed:

Tests completed Failed Passed Skipped
22004 11 21993 216
View the top 3 failed tests by shortest run time
tests.sentry.grouping.test_builtin_fingerprinting test_built_in_nextjs_rules_from_config_string_with_custom
Stack Traces | 0.086s run time
#x1B[1m#x1B[.../sentry/grouping/test_builtin_fingerprinting.py#x1B[0m:291: in test_built_in_nextjs_rules_from_config_string_with_custom
    assert rules._to_config_structure(include_builtin=False) == {
#x1B[1m#x1B[31mE   assert {'rules': [{'... 'version': 1} == {'rules': [{'... 'version': 1}#x1B[0m
#x1B[1m#x1B[31mE     #x1B[0m
#x1B[1m#x1B[31mE     Omitting 1 identical items, use -vv to show#x1B[0m
#x1B[1m#x1B[31mE     Differing items:#x1B[0m
#x1B[1m#x1B[31mE     {'rules': [{'attributes': {}, 'fingerprint': ['DatabaseUnavailable'], 'matchers': [['type', 'DatabaseUnavailable']], 'text': 'type:"DatabaseUnavailable" -> "DatabaseUnavailable"'}]} != {'rules': [{'attributes': {}, 'fingerprint': ['DatabaseUnavailable'], 'matchers': [['type', 'DatabaseUnavailable']]}]}#x1B[0m
#x1B[1m#x1B[31mE     #x1B[0m
#x1B[1m#x1B[31mE     Full diff:#x1B[0m
#x1B[1m#x1B[31mE       {#x1B[0m
#x1B[1m#x1B[31mE           'rules': [#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'DatabaseUnavailable',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'type',#x1B[0m
#x1B[1m#x1B[31mE                           'DatabaseUnavailable',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'type:"DatabaseUnavailable" -> "DatabaseUnavailable"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE           ],#x1B[0m
#x1B[1m#x1B[31mE           'version': 1,#x1B[0m
#x1B[1m#x1B[31mE       }#x1B[0m
tests.sentry.grouping.test_builtin_fingerprinting test_built_in_nextjs_rules_base
Stack Traces | 0.099s run time
#x1B[1m#x1B[.../sentry/grouping/test_builtin_fingerprinting.py#x1B[0m:120: in test_built_in_nextjs_rules_base
    assert rules._to_config_structure(include_builtin=True) == {
#x1B[1m#x1B[31mE   assert {'rules': [{'... 'version': 1} == {'rules': [{'... 'version': 1}#x1B[0m
#x1B[1m#x1B[31mE     #x1B[0m
#x1B[1m#x1B[31mE     Omitting 1 identical items, use -vv to show#x1B[0m
#x1B[1m#x1B[31mE     Differing items:#x1B[0m
#x1B[1m#x1B[31mE     {'rules': [{'attributes': {}, 'fingerprint': ['chunkloaderror'], 'is_builtin': True, 'matchers': [['family', 'javascri...use the error happened outside of a Suspense boundary, the entire root will switch to client rendering.']], ...}, ...]} != {'rules': [{'attributes': {}, 'fingerprint': ['chunkloaderror'], 'is_builtin': True, 'matchers': [['family', 'javascri... Because the error happened outside of a Suspense boundary, the entire root will switch to client rendering.']]}, ...]}#x1B[0m
#x1B[1m#x1B[31mE     #x1B[0m
#x1B[1m#x1B[31mE     Full diff:#x1B[0m
#x1B[1m#x1B[31mE       {#x1B[0m
#x1B[1m#x1B[31mE           'rules': [#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'chunkloaderror',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'type',#x1B[0m
#x1B[1m#x1B[31mE                           'ChunkLoadError',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" type:"ChunkLoadError" -> "chunkloaderror"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'chunkloaderror',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'value',#x1B[0m
#x1B[1m#x1B[31mE                           'ChunkLoadError*',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" value:"ChunkLoadError*" -> "chunkloaderror"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'hydrationerror',#x1B[0m
#x1B[1m#x1B[31mE                       '{{tags.transaction}}',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'tags.transaction',#x1B[0m
#x1B[1m#x1B[31mE                           '*',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'message',#x1B[0m
#x1B[1m#x1B[31mE                           'Hydration failed because the initial UI does not match '#x1B[0m
#x1B[1m#x1B[31mE                           'what was rendered on the server.',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" tags.transaction:"*" message:"Hydration '#x1B[0m
#x1B[1m#x1B[31mE     +             'failed because the initial UI does not match what was rendered on '#x1B[0m
#x1B[1m#x1B[31mE     +             'the server." -> "hydrationerror{{tags.transaction}}"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'hydrationerror',#x1B[0m
#x1B[1m#x1B[31mE                       '{{tags.transaction}}',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'tags.transaction',#x1B[0m
#x1B[1m#x1B[31mE                           '*',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'message',#x1B[0m
#x1B[1m#x1B[31mE                           'The server could not finish this Suspense boundary, '#x1B[0m
#x1B[1m#x1B[31mE                           'likely due to an error during server rendering. Switched '#x1B[0m
#x1B[1m#x1B[31mE                           'to client rendering.',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" tags.transaction:"*" message:"The server '#x1B[0m
#x1B[1m#x1B[31mE     +             'could not finish this Suspense boundary, likely due to an error '#x1B[0m
#x1B[1m#x1B[31mE     +             'during server rendering. Switched to client rendering." -> '#x1B[0m
#x1B[1m#x1B[31mE     +             '"hydrationerror{{tags.transaction}}"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'hydrationerror',#x1B[0m
#x1B[1m#x1B[31mE                       '{{tags.transaction}}',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'tags.transaction',#x1B[0m
#x1B[1m#x1B[31mE                           '*',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'message',#x1B[0m
#x1B[1m#x1B[31mE                           'There was an error while hydrating this Suspense '#x1B[0m
#x1B[1m#x1B[31mE                           'boundary. Switched to client rendering.',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" tags.transaction:"*" message:"There was an '#x1B[0m
#x1B[1m#x1B[31mE     +             'error while hydrating this Suspense boundary. Switched to client '#x1B[0m
#x1B[1m#x1B[31mE     +             'rendering." -> "hydrationerror{{tags.transaction}}"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'hydrationerror',#x1B[0m
#x1B[1m#x1B[31mE                       '{{tags.transaction}}',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'tags.transaction',#x1B[0m
#x1B[1m#x1B[31mE                           '*',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'message',#x1B[0m
#x1B[1m#x1B[31mE                           'There was an error while hydrating. Because the error '#x1B[0m
#x1B[1m#x1B[31mE                           'happened outside of a Suspense boundary, the entire root '#x1B[0m
#x1B[1m#x1B[31mE                           'will switch to client rendering.',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" tags.transaction:"*" message:"There was an '#x1B[0m
#x1B[1m#x1B[31mE     +             'error while hydrating. Because the error happened outside of a '#x1B[0m
#x1B[1m#x1B[31mE     +             'Suspense boundary, the entire root will switch to client '#x1B[0m
#x1B[1m#x1B[31mE     +             'rendering." -> "hydrationerror{{tags.transaction}}"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'hydrationerror',#x1B[0m
#x1B[1m#x1B[31mE                       '{{tags.transaction}}',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'tags.transaction',#x1B[0m
#x1B[1m#x1B[31mE                           '*',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'message',#x1B[0m
#x1B[1m#x1B[31mE                           'Text content does not match server-rendered HTML.',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" tags.transaction:"*" message:"Text content '#x1B[0m
#x1B[1m#x1B[31mE     +             'does not match server-rendered HTML." -> '#x1B[0m
#x1B[1m#x1B[31mE     +             '"hydrationerror{{tags.transaction}}"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE           ],#x1B[0m
#x1B[1m#x1B[31mE           'version': 1,#x1B[0m
#x1B[1m#x1B[31mE       }#x1B[0m
tests.sentry.grouping.test_builtin_fingerprinting test_built_in_nextjs_rules_from_empty_config_string
Stack Traces | 0.099s run time
#x1B[1m#x1B[.../sentry/grouping/test_builtin_fingerprinting.py#x1B[0m:205: in test_built_in_nextjs_rules_from_empty_config_string
    assert rules._to_config_structure(include_builtin=True) == {
#x1B[1m#x1B[31mE   assert {'rules': [{'... 'version': 1} == {'rules': [{'... 'version': 1}#x1B[0m
#x1B[1m#x1B[31mE     #x1B[0m
#x1B[1m#x1B[31mE     Omitting 1 identical items, use -vv to show#x1B[0m
#x1B[1m#x1B[31mE     Differing items:#x1B[0m
#x1B[1m#x1B[31mE     {'rules': [{'attributes': {}, 'fingerprint': ['chunkloaderror'], 'is_builtin': True, 'matchers': [['family', 'javascri...use the error happened outside of a Suspense boundary, the entire root will switch to client rendering.']], ...}, ...]} != {'rules': [{'attributes': {}, 'fingerprint': ['chunkloaderror'], 'is_builtin': True, 'matchers': [['family', 'javascri... Because the error happened outside of a Suspense boundary, the entire root will switch to client rendering.']]}, ...]}#x1B[0m
#x1B[1m#x1B[31mE     #x1B[0m
#x1B[1m#x1B[31mE     Full diff:#x1B[0m
#x1B[1m#x1B[31mE       {#x1B[0m
#x1B[1m#x1B[31mE           'rules': [#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'chunkloaderror',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'type',#x1B[0m
#x1B[1m#x1B[31mE                           'ChunkLoadError',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" type:"ChunkLoadError" -> "chunkloaderror"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'chunkloaderror',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'value',#x1B[0m
#x1B[1m#x1B[31mE                           'ChunkLoadError*',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" value:"ChunkLoadError*" -> "chunkloaderror"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'hydrationerror',#x1B[0m
#x1B[1m#x1B[31mE                       '{{tags.transaction}}',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'tags.transaction',#x1B[0m
#x1B[1m#x1B[31mE                           '*',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'message',#x1B[0m
#x1B[1m#x1B[31mE                           'Hydration failed because the initial UI does not match '#x1B[0m
#x1B[1m#x1B[31mE                           'what was rendered on the server.',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" tags.transaction:"*" message:"Hydration '#x1B[0m
#x1B[1m#x1B[31mE     +             'failed because the initial UI does not match what was rendered on '#x1B[0m
#x1B[1m#x1B[31mE     +             'the server." -> "hydrationerror{{tags.transaction}}"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'hydrationerror',#x1B[0m
#x1B[1m#x1B[31mE                       '{{tags.transaction}}',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'tags.transaction',#x1B[0m
#x1B[1m#x1B[31mE                           '*',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'message',#x1B[0m
#x1B[1m#x1B[31mE                           'The server could not finish this Suspense boundary, '#x1B[0m
#x1B[1m#x1B[31mE                           'likely due to an error during server rendering. Switched '#x1B[0m
#x1B[1m#x1B[31mE                           'to client rendering.',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" tags.transaction:"*" message:"The server '#x1B[0m
#x1B[1m#x1B[31mE     +             'could not finish this Suspense boundary, likely due to an error '#x1B[0m
#x1B[1m#x1B[31mE     +             'during server rendering. Switched to client rendering." -> '#x1B[0m
#x1B[1m#x1B[31mE     +             '"hydrationerror{{tags.transaction}}"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'hydrationerror',#x1B[0m
#x1B[1m#x1B[31mE                       '{{tags.transaction}}',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'tags.transaction',#x1B[0m
#x1B[1m#x1B[31mE                           '*',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'message',#x1B[0m
#x1B[1m#x1B[31mE                           'There was an error while hydrating this Suspense '#x1B[0m
#x1B[1m#x1B[31mE                           'boundary. Switched to client rendering.',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" tags.transaction:"*" message:"There was an '#x1B[0m
#x1B[1m#x1B[31mE     +             'error while hydrating this Suspense boundary. Switched to client '#x1B[0m
#x1B[1m#x1B[31mE     +             'rendering." -> "hydrationerror{{tags.transaction}}"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'hydrationerror',#x1B[0m
#x1B[1m#x1B[31mE                       '{{tags.transaction}}',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'tags.transaction',#x1B[0m
#x1B[1m#x1B[31mE                           '*',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'message',#x1B[0m
#x1B[1m#x1B[31mE                           'There was an error while hydrating. Because the error '#x1B[0m
#x1B[1m#x1B[31mE                           'happened outside of a Suspense boundary, the entire root '#x1B[0m
#x1B[1m#x1B[31mE                           'will switch to client rendering.',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" tags.transaction:"*" message:"There was an '#x1B[0m
#x1B[1m#x1B[31mE     +             'error while hydrating. Because the error happened outside of a '#x1B[0m
#x1B[1m#x1B[31mE     +             'Suspense boundary, the entire root will switch to client '#x1B[0m
#x1B[1m#x1B[31mE     +             'rendering." -> "hydrationerror{{tags.transaction}}"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE               {#x1B[0m
#x1B[1m#x1B[31mE                   'attributes': {},#x1B[0m
#x1B[1m#x1B[31mE                   'fingerprint': [#x1B[0m
#x1B[1m#x1B[31mE                       'hydrationerror',#x1B[0m
#x1B[1m#x1B[31mE                       '{{tags.transaction}}',#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE                   'is_builtin': True,#x1B[0m
#x1B[1m#x1B[31mE                   'matchers': [#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'family',#x1B[0m
#x1B[1m#x1B[31mE                           'javascript',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'tags.transaction',#x1B[0m
#x1B[1m#x1B[31mE                           '*',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                       [#x1B[0m
#x1B[1m#x1B[31mE                           'message',#x1B[0m
#x1B[1m#x1B[31mE                           'Text content does not match server-rendered HTML.',#x1B[0m
#x1B[1m#x1B[31mE                       ],#x1B[0m
#x1B[1m#x1B[31mE                   ],#x1B[0m
#x1B[1m#x1B[31mE     +             'text': 'family:"javascript" tags.transaction:"*" message:"Text content '#x1B[0m
#x1B[1m#x1B[31mE     +             'does not match server-rendered HTML." -> '#x1B[0m
#x1B[1m#x1B[31mE     +             '"hydrationerror{{tags.transaction}}"',#x1B[0m
#x1B[1m#x1B[31mE               },#x1B[0m
#x1B[1m#x1B[31mE           ],#x1B[0m
#x1B[1m#x1B[31mE           'version': 1,#x1B[0m
#x1B[1m#x1B[31mE       }#x1B[0m

To view individual test run time comparison to the main branch, go to the Test Analytics Dashboard

@lobsterkatie lobsterkatie force-pushed the kmclb-improve-grouping-component-and-fingerprinting-rule-json branch from 141fc21 to bdb65ac Compare October 17, 2024 06:17
@lobsterkatie lobsterkatie force-pushed the kmclb-use-full-save-pipeline-for-new-config-variant-tests branch from c839f6e to cee9d5e Compare October 17, 2024 20:17
@lobsterkatie lobsterkatie force-pushed the kmclb-improve-grouping-component-and-fingerprinting-rule-json branch from bdb65ac to 07ccd18 Compare October 17, 2024 20:17
@lobsterkatie lobsterkatie force-pushed the kmclb-use-full-save-pipeline-for-new-config-variant-tests branch from cee9d5e to da286ec Compare October 17, 2024 21:00
@lobsterkatie lobsterkatie force-pushed the kmclb-improve-grouping-component-and-fingerprinting-rule-json branch from 07ccd18 to d289ede Compare October 17, 2024 21:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Scope: Backend Automatically applied to PRs that change backend components
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant