Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Beliagal/qa-report-automation/llms.txt

Use this file to discover all available pages before exploring further.

Test steps form the core execution log of every QA report. Each step records exactly what action was performed on the application, what outcome was expected according to the specification, what actually happened during the test, and whether that outcome is considered a pass or a failure. Together these entries build the PASOS DE EJECUCIÓN table that occupies the body of the exported PDF. Filling in steps carefully and consistently makes the report immediately useful for developers, stakeholders, and future regression runs.

Test Step Form Fields

The step entry form sits below the Resumen Ejecutivo textbox in the scrollable QA panel. It contains four data fields and one optional attachment control.
Acción / Input
string
required
The action that was performed or the data that was entered during this step (placeholder text: Acción...). This is the only required field — if it is empty when you click AÑADIR PASO, the step is silently discarded and nothing is added to the report. In the PDF it populates the 80 mm wide Acción / Entrada column.
Esperado
string
The expected result as defined by the requirement or user story (placeholder text: Esperado...). Appears in the 40 mm Esperado column of the PDF table.
Obtenido
string
The actual result observed during test execution (placeholder text: Obtenido...). Appears in the 40 mm Obtenido column. Compare this value against Esperado to determine the step outcome.
Estado
string (Pass | Fail)
default:"Pass"
The verdict for this step. A read-only CTkComboBox widget with two options: Pass and Fail. Defaults to Pass on application launch. Choose Fail if the obtained result did not meet the expected result. The dropdown value is not reset after each step is committed — it retains whatever you last selected, so remember to change it when switching between passing and failing steps.
Screenshot
file path (optional)
An optional image file attached as visual evidence for the step. Managed via the 📸 Imagen button — see the Evidence Screenshots guide for full details. Stored in the step dict under the key "img" as an absolute file path, or an empty string if no screenshot was attached.

Adding a Test Step

1

Enter the action or input

Click the top entry field (labelled with the placeholder Acción...) and type a clear description of what was done — for example, "Enter valid credentials and click Login". This field spans the full width of the form and is the only one that is required.
2

Fill in Esperado and Obtenido

Tab to the Esperado field and type the expected result. Then move to Obtenido and type what actually happened during execution. Both fields sit side-by-side in a two-column row below the action field.
3

Select Pass or Fail

Click the Pass / Fail dropdown (CTkComboBox) and select the appropriate verdict. The dropdown is read-only, so only these two values are accepted. It defaults to Pass when the application first launches and retains the last-selected value between steps — change it deliberately whenever the outcome differs from the previous step.
4

Optionally attach a screenshot

If you have captured a screenshot as evidence, click 📸 Imagen before committing the step. The button will change to ✅ Imagen Ok once a file is selected. See the Evidence Screenshots guide for full details on supported formats and PDF embedding.
5

Click AÑADIR PASO

Click the dark AÑADIR PASO button that spans the full width of the form. The tool calls _on_add(), which:
  1. Checks that the action field is not empty — if it is, the function returns immediately without adding anything.
  2. Builds a step dictionary and appends it to ReportData.pruebas.
  3. Calls _update_log() to refresh the real-time preview.
  4. Calls _save_session() to persist the session to sesion_testing.json.
  5. Calls _clear_step() to reset the action, expected, and obtained fields and clear the image selection, ready for the next step.

Step Data Structure

Each committed step is stored as a Python dictionary inside ReportData.pruebas. The full structure is:
{
    "input": "Click login button",
    "esp":   "User is redirected to dashboard",
    "obt":   "User is redirected to dashboard",
    "estado": "Pass",
    "img":   "/path/to/screenshot.png"  # empty string if no screenshot
}
These keys map directly to the columns of the PDF execution table:
Dict keyPDF columnWidth
inputAcción / Entrada80 mm
espEsperado40 mm
obtObtenido40 mm
estadoEstado30 mm
imgEmbedded image100 mm

Auto-Save After Every Step

Immediately after each successful _on_add() call, _save_session() serialises the full ReportData state — both the metadata dictionary and the entire pruebas list — to sesion_testing.json in the application directory. You do not need to manually save; the file is always up to date with the last committed step.
# gui.py — _save_session()
def _save_session(self):
    try:
        self._sync()
        with open(self.session_file, "w", encoding="utf-8") as f:
            json.dump(
                {"meta": self.report_data.metadata, "pruebas": self.report_data.pruebas},
                f, indent=4
            )
    except Exception:
        pass

Real-Time Log Preview

The CTkTextbox log at the bottom of the scrollable panel updates after every step is added. Each step entry is colour-coded:
  • Green (#2ecc71) — steps with "estado": "Pass"
  • Red (#e74c3c) — steps with "estado": "Fail"
The title lines (--- VISTA PREVIA DEL INFORME --- and --- PASOS (n) ---) are rendered in blue (#3498db, bold). The preview truncates each action to 40 characters for readability, but the full text is always stored in ReportData.pruebas and written to the PDF without truncation.
If the Acción / Input field is empty when you click AÑADIR PASO, the step will not be added and no feedback is shown. Always ensure the action field contains at least one non-whitespace character before submitting — the check is if not action: return inside _on_add(), where action = self.ent_in.get().strip().
To start a completely fresh test session — clearing all steps, metadata, and the session file — click RESET TOTAL in the top bar. The tool will ask for confirmation before wiping everything. This is the recommended way to begin a new test cycle without closing and relaunching the application.

Build docs developers (and LLMs) love