Skip to content

Add integration tests and CI workflow - #24

Open
shoebham wants to merge 5 commits into
mainfrom
add-integration-tests
Open

Add integration tests and CI workflow#24
shoebham wants to merge 5 commits into
mainfrom
add-integration-tests

Conversation

@shoebham

Copy link
Copy Markdown
Owner

Summary

  • Adds an integration test suite (tests/integration/test_app_running.py) that verifies required app files exist, starts the Flask server, and submits sample text (Hello world) to confirm sign-word output.
  • Adds GitHub Actions workflow (.github/workflows/integration-tests.yml) that sets up Java/Python/spaCy/torch, downloads Stanza models, fetches the Stanford parser at CI runtime (no longer committed on main), and runs the IT suite.
  • Small compatibility tweaks: configurable PORT, optional IT_LIGHT_PIPELINE for lighter CI stanza loading (default app behavior unchanged), torch>=2.0,<2.6 for stanza/PyTorch compatibility, Dockerfile/spacy pin for Python 3.9.

Why

NLP/model changes should not silently break the running application. This CI gate fails the build if the app cannot start or process text.

Test plan

  • Local IT pass: PORT=5055 IT_LIGHT_PIPELINE=1 python tests/integration/test_app_running.py
  • GitHub Actions green on add-integration-tests (post-main merge, with runtime Stanford parser download)
  • Confirm workflow runs on this PR and stays green
  • Smoke-check normal app run without IT_LIGHT_PIPELINE (default full pipeline unchanged)

shoebham added 5 commits June 24, 2026 11:57
Add an IT suite that verifies required app files exist, starts the Flask
server, and submits sample text to confirm sign-word output. Wire it into
GitHub Actions with Java/Python/spaCy/torch setup so NLP model changes
cannot silently break the running application. Support configurable PORT
for CI/local port conflicts and pin torch/spaCy for Python 3.9 compatibility.
Use an optional IT_LIGHT_PIPELINE mode so CI only loads tokenize/pos/lemma
instead of the full heavy default stanza stack. Pre-download models in a
dedicated workflow step and stream server logs on failure for debugging.
Drain Flask/server logs on a background thread so verbose NLP print
output during POST cannot fill the subprocess pipe and hang the server.
main removed the committed LFS jar; download and extract the parser in
the workflow instead, and stop requiring it as a tracked repo file.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant