Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions e2e_tests/conftest.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import os

import pytest


# Import fixtures
pytest_plugins = "e2e_tests.e2e.ui.fixtures.ui"
pytest_plugins = ("e2e_tests.e2e.ui.fixtures.ui", "e2e_tests.e2e.ui.fixtures.webview")


def pytest_addoption(parser):
Expand All @@ -22,6 +21,13 @@ def pytest_addoption(parser):
default=os.getenv("REX_PASSWORD", None),
help="rex password",
)
parser.addini("abl_url", help="base url for abl json file")
parser.addoption(
"--abl_url",
metavar="url",
default=os.getenv("ABL_URL", None),
help="base url for abl json",
)


@pytest.fixture(scope="session")
Expand Down
31 changes: 31 additions & 0 deletions e2e_tests/docx-tools/test_compare_rex_abl.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
"""
Compares uuids from rex/release.json and abl api
Run: pytest -k test_compare_rex_abl.py docx-tools
--base-url https://(staging.)openstax.org --abl_url https://corgi(-staging).ce.openstax.org/api/abl/

Latest update on April 9, 2026
"""


def test_compare_rex_abl(rex_released_books, abl_books_uuids_slugs):
rex_uuids = set(rex_released_books.keys())
abl_uuids = set(abl_books_uuids_slugs.keys())

missing = abl_uuids - rex_uuids

print(f"MATCHING UUIDs : {len(abl_uuids & rex_uuids)}")

if missing:
print("NOT MATCHING UUIDs:")
for uuid in missing:
# Get the title slug from the ABL dictionary
title = abl_books_uuids_slugs.get(uuid, "Unknown Title")
print(f" - {uuid} : {title}")
else:
print("NOT MATCHING UUIDs: 0")

# Construct a detailed error message for the assertion
error_details = "\n".join([f"{u}: {abl_books_uuids_slugs.get(u)}" for u in missing])
assert (
not missing
), f"\n\n >>>>> UUID(s) IN ABL BUT NOT IN REX: \n{error_details} <<<<<\n"
38 changes: 38 additions & 0 deletions e2e_tests/e2e/ui/fixtures/webview.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import pytest
import requests


@pytest.fixture
def rex_released_books(base_url):
release_json_url = f"{base_url}/rex/release.json"
response = requests.get(release_json_url)
response.raise_for_status()

return response.json()["books"]


@pytest.fixture
def abl_books_uuids_slugs(abl_api_approved):
"""Returns dictionary of uuid:slug values of all collection entries in ABL api"""

uuids_slugs = {}

for i in abl_api_approved:
uuids_slugs[i["uuid"]] = i["slug"]

return uuids_slugs


@pytest.fixture
def abl_url(request):
"""Return ABL json url"""
config = request.config
base_url = config.getoption("abl_url") or config.getini("abl_url")
return base_url


@pytest.fixture
def abl_api_approved(abl_url):
"""Return list of dictionaries of approved books in ABL json"""
abl_dict = requests.get(abl_url).json()
return abl_dict
Loading