Skip to content

Commit

Permalink
test: add non regression example
Browse files Browse the repository at this point in the history
  • Loading branch information
colinux committed Sep 2, 2024
1 parent 55a38ee commit c43b45e
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -160,3 +160,5 @@ cython_debug/
#.idea/

package_scripts/tmp/

tmp/
65 changes: 65 additions & 0 deletions tests/fixtures/procedure-98904.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<html lang='fr'>
<head>
<link rel="stylesheet" href="/assets/attestation.debug-3c57ac8945dab8095dd2b5cb0fb3fd6321ef7b646edb4c2ceed35b8af00b93d3.css" media="all" />
<title>Attestation</title>



<meta content='localhost:3000' name='generator'>
<meta content='2024-09-02T10:55:10+02:00' name='dcterms.created'>
</head>
<body id='attestation'>
<div class='a4-container official-layout'>
<div class='content'>
<header class='first-header'>
<div class='left'>
<img alt="" class="marianne" src="/assets/centered_marianne-00cb9c7009adea9ffa65aa8cf028ce2f94b88b1bcdaf202c5a42fc1976f0dabd.svg" />
<div class='bloc-marque'>
<p class="intitule">DS</p>
<img alt="" class="devise" src="/assets/liberte2-5ee183e5c6400eccff4b10a6a3c3beff34ec3582b77aa13ef701bb8f40c6bd19.svg" />
</div>
</div>
<div class='right'>
</div>
</header>
<footer>
<p>Préfecture de zone / [email protected]
<br />2 878 rue de la Capitainerie — CS — 25000 RENNES CEDEX 02 - Tel: 02 01 02 01 02</p>
</footer>
<div class='main'>
<header><div style="text-align:left;"><p style="text-align:left;">Service des techs de DS</p></div>
<div style="text-align:left;"><p style="text-align:left;">Fait le </p></div></header><h1 style="text-align:center;">Titre de l’attestation</h1><p class="body-start" style="text-align:left;">Cher M. C C ,</p><p style="text-align:left;">Voici le rendu d’une liste à choix multilpes : </p><ul>
<li><p>Premier choix</p></li>
<li><p>Deuxième choix</p></li>
</ul><p> </p><p style="text-align:left;">Et celui d’un bloc répétable : </p><ol class="tdc-repetition">
<li><dl>
<dt>Nom</dt>
<dd>Lavande</dd>
<dt>Nombre</dt>
<dd>20</dd>
<dt>Pourquoi si peu ?</dt>
<dd></dd>
</dl></li>
<li><dl>
<dt>Nom</dt>
<dd>Olivier</dd>
<dt>Nombre</dt>
<dd>1</dd>
<dt>Pourquoi si peu ?</dt>
<dd>pas la place</dd>
</dl></li>
<li><dl>
<dt>Nom</dt>
<dd>Un nom super long qui aura de bonnes chances de passer sur une seconde ligne (ou pas, on verra hein)</dd>
<dt>Nombre</dt>
<dd>20</dd>
<dt>Pourquoi si peu ?</dt>
<dd></dd>
</dl></li>
</ol><p> </p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><h3 style="text-align:left;">Un niveau de titre qui passe sur 2 lignes, et qui pose un problème de chevauchement lorqu’on a un line-height qui n’est pas adapté.</h3><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p><p style="text-align:left;">Vous pouvez éditer ce texte pour personnaliser votre attestation. Pour ajouter du contenu issu du dossier, utilisez les balises situées sous cette zone de saisie.</p>
</div>
</div>
</div>

</body>
</html>
Binary file added tests/fixtures/procedure-98904.pdf
Binary file not shown.
56 changes: 56 additions & 0 deletions tests/test_non_regression.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import os
from unittest import TestCase
from weasyprint import HTML
from src.custom_fetcher import custom_url_fetcher

fixtures_dir = "tests/fixtures"
output_dir = "tmp"

os.makedirs(output_dir, exist_ok=True)


class TestIntegrations(TestCase):
# NOTE: App server must run in order to fetch assets.
def test_non_regression(self):
if "CI" in os.environ:
self.skipTest(
"Skipping non-regression test in CI: app server assets must run."
)

# Iterate through each HTML file in the fixtures directory
for filename in os.listdir(fixtures_dir):
if filename.endswith(".html"):
html_file_path = os.path.join(fixtures_dir, filename)

# Load HTML content
with open(html_file_path, "r", encoding="utf-8") as f:
string_html = f.read()

# Generate PDF.
html = HTML(
string=string_html,
base_url=os.environ.get("BASE_URL"),
url_fetcher=custom_url_fetcher,
)

pdf = html.write_pdf()

# Define output PDF file path
pdf_filename = filename.replace(".html", ".pdf")

# Check if PDF exists in fixtures_dir
fixtures_file_path = os.path.join(fixtures_dir, pdf_filename)
if not os.path.exists(fixtures_file_path):
# If not, write the PDF to fixtures_dir
with open(fixtures_file_path, "wb") as f:
f.write(pdf)
print(f"New reference PDF saved: {fixtures_file_path}")

# Save the PDF to the specified directory
pdf_file_path = os.path.join(output_dir, pdf_filename)
with open(pdf_file_path, "wb") as f:
f.write(pdf)

print(
f"Non regression PDF generated: {pdf_file_path}, compare it with reference"
)

0 comments on commit c43b45e

Please sign in to comment.