@@ -91,15 +91,23 @@ def setUpClass(cls):
9191 cls .ui_module = UI_MODULE .read_text (encoding = "utf-8" )
9292 cls .dialog_manager = DIALOG_MANAGER .read_text (encoding = "utf-8" )
9393 cls .feedback_service = FEEDBACK_SERVICE .read_text (encoding = "utf-8" )
94- cls .component_showcase = COMPONENT_SHOWCASE . read_text ( encoding = "utf-8" )
95- cls .component_showcase_module = COMPONENT_SHOWCASE_MODULE . read_text (
96- encoding = "utf-8"
94+ cls .component_showcase = cls . _read_local_artifact ( COMPONENT_SHOWCASE )
95+ cls .component_showcase_module = cls . _read_local_artifact (
96+ COMPONENT_SHOWCASE_MODULE
9797 )
98- cls .component_showcase_styles = COMPONENT_SHOWCASE_STYLES . read_text (
99- encoding = "utf-8"
98+ cls .component_showcase_styles = cls . _read_local_artifact (
99+ COMPONENT_SHOWCASE_STYLES
100100 )
101- cls .parity_matrix = PARITY_MATRIX .read_text (encoding = "utf-8" )
102- cls .modal_inventory = MODAL_INVENTORY .read_text (encoding = "utf-8" )
101+ cls .parity_matrix = cls ._read_local_artifact (PARITY_MATRIX )
102+ cls .modal_inventory = cls ._read_local_artifact (MODAL_INVENTORY )
103+
104+ @staticmethod
105+ def _read_local_artifact (path ):
106+ return path .read_text (encoding = "utf-8" ) if path .exists () else None
107+
108+ def _require_local_artifacts (self , * artifacts ):
109+ if any (artifact is None for artifact in artifacts ):
110+ self .skipTest ("internal modernization evidence is not shipped in releases" )
103111
104112 def test_shared_modal_has_accessible_dialog_contract (self ):
105113 modal = re .search (
@@ -2846,6 +2854,7 @@ def test_github_settings_verify_identity_and_long_errors_expand(self):
28462854 self .assertIn (selector , styles )
28472855
28482856 def test_component_showcase_reuses_shared_production_boundaries (self ):
2857+ self ._require_local_artifacts (self .component_showcase )
28492858 for stylesheet in (
28502859 "./styles/modules/base.css" ,
28512860 "./styles/modules/primitives.css" ,
@@ -2882,6 +2891,9 @@ def test_component_showcase_reuses_shared_production_boundaries(self):
28822891 self .assertNotRegex (self .component_showcase , r'\sstyle="' )
28832892
28842893 def test_component_showcase_has_accessible_interactive_states (self ):
2894+ self ._require_local_artifacts (
2895+ self .component_showcase , self .component_showcase_module
2896+ )
28852897 for contract in (
28862898 'role="group" aria-label="Showcase theme"' ,
28872899 'role="tablist" aria-label="Workspace views"' ,
@@ -2909,6 +2921,7 @@ def test_component_showcase_has_accessible_interactive_states(self):
29092921 self .assertIn ("returnFocus: dialogTrigger" , self .component_showcase_module )
29102922
29112923 def test_component_showcase_has_stable_responsive_layout (self ):
2924+ self ._require_local_artifacts (self .component_showcase_styles )
29122925 for contract in (
29132926 "grid-template-columns: repeat(2, minmax(0, 1fr));" ,
29142927 "grid-template-columns: repeat(3, minmax(0, 1fr));" ,
@@ -3358,6 +3371,7 @@ def test_dialog_families_use_shared_manager(self):
33583371 )
33593372
33603373 def test_modal_inventory_covers_dialog_implementation_families (self ):
3374+ self ._require_local_artifacts (self .modal_inventory )
33613375 required_sources = {
33623376 "ui.js" ,
33633377 "file-operations-ui.js" ,
@@ -3376,6 +3390,7 @@ def test_modal_inventory_covers_dialog_implementation_families(self):
33763390 self .assertIn (source , self .modal_inventory )
33773391
33783392 def test_parity_matrix_covers_every_feature_family (self ):
3393+ self ._require_local_artifacts (self .parity_matrix )
33793394 required_sections = {
33803395 "Workspace And Editor" ,
33813396 "Local Files And Search" ,
@@ -3396,6 +3411,7 @@ def test_parity_matrix_covers_every_feature_family(self):
33963411 self .assertGreaterEqual (len (rows ), 60 )
33973412
33983413 def test_parity_matrix_assigns_owner_and_proof_to_every_feature_family (self ):
3414+ self ._require_local_artifacts (self .parity_matrix )
33993415 self .assertIn ("## Ownership And Proof Contract" , self .parity_matrix )
34003416 required_domains = {
34013417 "Workspace and editor" ,
0 commit comments