@riddledc/riddle-proof 0.7.80 → 0.7.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -592,6 +592,104 @@ def run_verify_quality_ignores_proof_telemetry_console_text():
592
592
  assert weak_delta['passed'] is False
593
593
  assert 'below the legibility threshold' in weak_delta['reason']
594
594
 
595
+ targeted_delta = namespace['extract_visual_delta'](
596
+ {
597
+ 'ok': True,
598
+ 'result': {
599
+ 'proofEvidence': {
600
+ 'change_pct': '0.0487',
601
+ 'changed_pixels': 2351,
602
+ 'width': 1280,
603
+ 'height': 900,
604
+ },
605
+ },
606
+ },
607
+ {
608
+ 'change_request': 'Add the Riddle Proof recovery smoke badge',
609
+ 'success_criteria': 'The recovery smoke badge is visible after verify.',
610
+ 'parsed_assertions': [{'kind': 'text_visible', 'text': 'recovery smoke badge'}],
611
+ },
612
+ {
613
+ 'after': {
614
+ 'visible_text_sample': 'Home page Riddle Proof recovery smoke badge',
615
+ 'headings': ['Home page'],
616
+ 'buttons': ['Start'],
617
+ 'links': [],
618
+ },
619
+ 'route': {'after_observed_path': '/'},
620
+ },
621
+ )
622
+ assert targeted_delta['status'] == 'measured'
623
+ assert targeted_delta['passed'] is True
624
+ assert targeted_delta['threshold_mode'] == 'targeted_semantic'
625
+ assert targeted_delta['min_changed_pixels'] == 250
626
+ assert 'targeted-change threshold' in targeted_delta['reason']
627
+
628
+ unmatched_targeted_delta = namespace['extract_visual_delta'](
629
+ {
630
+ 'ok': True,
631
+ 'result': {
632
+ 'proofEvidence': {
633
+ 'change_pct': '0.0487',
634
+ 'changed_pixels': 2351,
635
+ 'width': 1280,
636
+ 'height': 900,
637
+ },
638
+ },
639
+ },
640
+ {'change_request': 'Add the billing badge'},
641
+ {'after': {'visible_text_sample': 'Home page unchanged copy'}},
642
+ )
643
+ assert unmatched_targeted_delta['status'] == 'measured'
644
+ assert unmatched_targeted_delta['passed'] is False
645
+ assert unmatched_targeted_delta['threshold_mode'] == 'default'
646
+
647
+ generic_page_token_delta = namespace['extract_visual_delta'](
648
+ {
649
+ 'ok': True,
650
+ 'result': {
651
+ 'proofEvidence': {
652
+ 'change_pct': '0.0487',
653
+ 'changed_pixels': 2351,
654
+ 'width': 1280,
655
+ 'height': 900,
656
+ },
657
+ },
658
+ },
659
+ {'change_request': 'Polish the pricing page CTA'},
660
+ {'after': {'visible_text_sample': 'Pricing plans for teams'}},
661
+ )
662
+ assert generic_page_token_delta['status'] == 'measured'
663
+ assert generic_page_token_delta['passed'] is False
664
+ assert generic_page_token_delta['threshold_mode'] == 'default'
665
+
666
+ broad_region_targeted_delta = namespace['extract_visual_delta'](
667
+ {
668
+ 'ok': True,
669
+ 'result': {
670
+ 'proofEvidence': {
671
+ 'change_pct': '0.0487',
672
+ 'changed_pixels': 2351,
673
+ 'total_pixels': 1152000,
674
+ 'width': 1280,
675
+ 'height': 900,
676
+ 'changed_region': {'x': 0, 'y': 0, 'width': 1280, 'height': 720},
677
+ },
678
+ },
679
+ },
680
+ {
681
+ 'change_request': 'Add the Riddle Proof recovery smoke badge',
682
+ 'success_criteria': 'The recovery smoke badge is visible after verify.',
683
+ 'parsed_assertions': [{'kind': 'text_visible', 'text': 'recovery smoke badge'}],
684
+ },
685
+ {'after': {'visible_text_sample': 'Home page Riddle Proof recovery smoke badge'}},
686
+ )
687
+ assert broad_region_targeted_delta['status'] == 'measured'
688
+ assert broad_region_targeted_delta['passed'] is False
689
+ assert broad_region_targeted_delta['threshold_mode'] == 'default'
690
+ assert broad_region_targeted_delta['changed_region']['classification'] == 'broad'
691
+ assert broad_region_targeted_delta['localization_support']['supported'] is False
692
+
595
693
  unmeasured_delta = namespace['extract_visual_delta']({
596
694
  'ok': True,
597
695
  'screenshots': [{'name': 'after-proof.png', 'url': 'https://cdn.example.com/after-proof.png'}],
@@ -617,6 +715,31 @@ def run_verify_quality_ignores_proof_telemetry_console_text():
617
715
  assert visual_diff_delta['change_percent'] == 1.45
618
716
  assert visual_diff_delta['changed_pixels'] == 14094
619
717
 
718
+ viewport_status = namespace['capture_viewport_matrix_status'](
719
+ {
720
+ 'viewport_matrix': [
721
+ {'name': 'phone', 'width': 390, 'height': 844},
722
+ {'name': 'ipad', 'width': 820, 'height': 1180},
723
+ ],
724
+ },
725
+ {
726
+ 'outputs': [
727
+ {'name': 'after-proof-phone.png', 'url': 'https://cdn.example.com/phone.png'},
728
+ {'name': 'after-proof-ipad.png', 'url': 'https://cdn.example.com/ipad.png'},
729
+ ],
730
+ },
731
+ 'after-proof',
732
+ )
733
+ assert viewport_status['status'] == 'complete'
734
+ assert [item['name'] for item in viewport_status['executed']] == ['phone', 'ipad']
735
+ missing_viewport_status = namespace['capture_viewport_matrix_status'](
736
+ {'viewport_matrix': [{'name': 'phone', 'width': 390, 'height': 844}]},
737
+ {'outputs': [{'name': 'after-proof-desktop.png', 'url': 'https://cdn.example.com/desktop.png'}]},
738
+ 'after-proof',
739
+ )
740
+ assert missing_viewport_status['status'] == 'incomplete'
741
+ assert missing_viewport_status['missing'][0]['name'] == 'phone'
742
+
620
743
  before_png = png_rgba(2, 1, bytes([
621
744
  0, 0, 0, 255,
622
745
  0, 0, 0, 255,
@@ -642,6 +765,11 @@ def run_verify_quality_ignores_proof_telemetry_console_text():
642
765
  assert artifact_image_delta['source'] == 'riddle_artifact_image_diff'
643
766
  assert artifact_image_delta['changed_pixels'] == 1
644
767
  assert artifact_image_delta['change_percent'] == 50
768
+ assert artifact_image_delta['changed_region']['x'] == 1
769
+ assert artifact_image_delta['changed_region']['y'] == 0
770
+ assert artifact_image_delta['changed_region']['width'] == 1
771
+ assert artifact_image_delta['changed_region']['height'] == 1
772
+ assert artifact_image_delta['changed_region']['localized_for_targeted_change'] is True
645
773
 
646
774
  fallback_calls = []
647
775