fix(marketing): A-2.7a — comparatif consistency + SOC 2 hedge + cross-platform emoji

- Reword comparatif row 1 to make Teams ✗ for non-Loi-25-compliant US transfer
  (was ⚠ — too soft; territoriality is binary)
- Reword row 2 to positive: 'Souveraineté hors Cloud Act US' (was inverted —
  ✓ used for bad outcomes, breaking visual scan convention)
- Reword row 4 criterion to match deliverable: 'Diarisation jusqu'à 8 locuteurs'
  (was '8+', mismatched DictIA's '✓ Jusqu'à 8' cell)
- Reword row 5 to 'Coût mensuel par utilisateur' (was 'utilisateur/mois' —
  awkward French + missing NBSP per OQLF)
- Hedge SOC 2 Type II claim about OVH Beauharnois — third-party certification
  scope-dependent; reword to 'conformité documentée selon les services
  (ISO 27001, SOC 2 selon le périmètre)' to avoid LPC art. 219 risk
- Replace 🇨🇦 regional indicator pair with 🍁 maple leaf — renders reliably
  on Windows + Firefox Linux without color-emoji fonts
- Update existing test for renamed criteria keywords
- Add regression test for ✓-means-good convention + SOC 2 hedge guard

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Allison
2026-04-27 19:36:01 -04:00
parent 0d69fcd034
commit 31fada46d4
2 changed files with 38 additions and 18 deletions

View File

@@ -523,12 +523,12 @@ def test_comparatif_table_has_4_competitors_and_6_criteria():
assert col in body, f"Comparatif missing column: {col}"
# 6 criteria (extract by their distinctive phrasing)
criteria_keywords = [
'Conforme Loi', # row 1
'Cloud Act', # row 2
'Large-v3 fine-tun', # row 3 (escaped or raw)
'Diarisation', # row 4
'utilisateur/mois', # row 5
'Audit trail' # row 6
'Conforme Loi', # row 1
'Souveraineté hors Cloud Act', # row 2 (renamed)
'Large-v3 fine-tun', # row 3
'Diarisation jusqu', # row 4 (renamed)
'mensuel par utilisateur', # row 5 (renamed)
'Audit trail' # row 6
]
for kw in criteria_keywords:
assert kw in body, f"Comparatif missing criterion containing: {kw}"
@@ -573,6 +573,11 @@ def test_conformite_4_pillars():
assert 'Mapp' in body, "Must use 'Mappé' (not 'Certifié')"
# Citation/contact for verification
assert 'info@dictia.ca' in body
# SOC 2 claim must be hedged ('selon le périmètre') not absolute
assert 'selon le périmètre' in body or 'selon le p&eacute;rim&egrave;tre' in body, \
"SOC 2 claim must be hedged — see code-review I-3"
# ISO 27001 reference is OK (verifiable from OVH compliance page)
assert 'ISO' in body and '27001' in body, "Reference to ISO 27001 expected"
def test_conformite_uses_wcag_safe_text_on_dark():
@@ -601,3 +606,18 @@ def test_no_unverifiable_competitor_claims():
]
for phrase in forbidden_phrases:
assert phrase not in body, f"Forbidden competitive claim: {phrase}"
def test_comparatif_check_marks_consistently_mean_good():
"""Each ✓ in the table should mark a 'good' outcome for that column.
Regression guard against the inverted-Cloud-Act-row bug.
Specifically: DictIA cell of every row must contain ✓ (DictIA wins on every criterion).
"""
client = app.test_client()
body = client.get('/').data.decode('utf-8')
# The 'Souveraineté hors Cloud Act' row must have ✓ for DictIA (after rename)
assert 'Souveraineté hors Cloud Act' in body
# And must NOT have the legacy inverted form
assert 'Exposé au Cloud Act' not in body, "Row 2 must be reworded to positive convention"
# Specifically check Teams gets ✗ for the territoriality criterion (was ⚠ before)
assert '✗ Soumis Cloud Act' in body, "Teams must show ✗ for non-Loi-25-compliant transfer"