@@ -35,6 +35,30 @@ def setUpClass(cls) -> None:
3535 cls .website_readme = (
3636 REPO_ROOT / "tools" / "web" / "README.md"
3737 ).read_text (encoding = "utf-8" )
38+ cls .website_specification = (
39+ REPO_ROOT / "docs" / "specifications" / "website.md"
40+ ).read_text (encoding = "utf-8" )
41+ cls .firmware_requirements = (
42+ REPO_ROOT / "docs" / "specifications" / "firmware" / "specs.md"
43+ ).read_text (encoding = "utf-8" )
44+ cls .browser_flashing = (
45+ REPO_ROOT
46+ / "docs"
47+ / "specifications"
48+ / "firmware"
49+ / "browser-flashing.md"
50+ ).read_text (encoding = "utf-8" )
51+ cls .flash_page = (
52+ REPO_ROOT / "tools" / "web" / "src" / "app" / "flash" / "page.tsx"
53+ ).read_text (encoding = "utf-8" )
54+ cls .flash_status = (
55+ REPO_ROOT
56+ / "tools"
57+ / "web"
58+ / "src"
59+ / "components"
60+ / "flash-status.tsx"
61+ ).read_text (encoding = "utf-8" )
3862
3963 def test_readme_is_truthful_before_v042_hil_completes (self ) -> None :
4064 firmware = markdown_section (self .readme , "What works" )
@@ -156,6 +180,76 @@ def test_public_summaries_distinguish_build_targets_from_release_support(
156180 )
157181 self .assertNotIn ("initial validated firmware targets" , board_scope )
158182
183+ def test_preactivation_profiles_are_candidates_not_current_releases (
184+ self ,
185+ ) -> None :
186+ self .assertIn (
187+ "v0.4.2 candidate qualification scope is profile-scoped" ,
188+ self .firmware_overview ,
189+ )
190+ self .assertIn (
191+ "current v0.4.2 candidate set is the exact `esp32-4mb`" ,
192+ self .website_specification ,
193+ )
194+ self .assertIn (
195+ "v0.4.2 release candidate targets exactly these two" ,
196+ self .browser_flashing ,
197+ )
198+ self .assertIn (
199+ "current pre-v1 candidate set is exactly `esp32-4mb`" ,
200+ self .product_requirements ,
201+ )
202+ self .assertIn (
203+ "current pre-v1 candidate qualification set is exactly" ,
204+ self .firmware_requirements ,
205+ )
206+
207+ prohibited_claims = (
208+ "current pre-v1 qualification is profile-scoped" ,
209+ "current pre-v1 release list is" ,
210+ "current pre-v1 public set is" ,
211+ "current pre-v1 release set is" ,
212+ "current pre-v1 public bundle contains exactly these two qualified" ,
213+ "current pre-v1 qualification set is exactly" ,
214+ )
215+ for claim in prohibited_claims :
216+ for document in (
217+ self .firmware_overview ,
218+ self .website_specification ,
219+ self .browser_flashing ,
220+ self .product_requirements ,
221+ self .firmware_requirements ,
222+ ):
223+ self .assertNotIn (claim , document )
224+
225+ def test_preactivation_installer_ui_does_not_call_candidates_qualified (
226+ self ,
227+ ) -> None :
228+ self .assertIn (
229+ "candidate ESP32 and ESP32-S3 profiles" ,
230+ self .flash_page ,
231+ )
232+ self .assertIn (
233+ "both exact current candidate profiles" ,
234+ self .flash_page ,
235+ )
236+ self .assertIn (
237+ "both exact current candidate profiles" ,
238+ self .flash_status ,
239+ )
240+ self .assertNotIn (
241+ "qualified ESP32 and ESP32-S3 profiles" ,
242+ self .flash_page ,
243+ )
244+ self .assertNotIn (
245+ "both exact current release profiles" ,
246+ self .flash_page ,
247+ )
248+ self .assertNotIn (
249+ "both exact current release profiles" ,
250+ self .flash_status ,
251+ )
252+
159253
160254if __name__ == "__main__" :
161255 unittest .main ()
0 commit comments