Skip to content

test(image-watermark): update smoke for fingerprint payload #64

test(image-watermark): update smoke for fingerprint payload

test(image-watermark): update smoke for fingerprint payload #64

Workflow file for this run

name: test all
on: [push, pull_request]
permissions:
contents: read
jobs:
python-smoke:
runs-on: ubuntu-latest
name: Test robust watermark engine
defaults:
run:
working-directory: blind_watermark
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: '3.10'
- name: Install dependencies
run: |
pip install -r requirements.txt
- name: Smoke test - import and roundtrip
shell: python {0}
env:
PYTHONPATH: .
run: |
from rwm_engine import embed_watermark, extract_watermark, check_dependencies
import numpy as np
dep = check_dependencies()
assert dep['ok'], f'Missing deps: {dep}'
img = np.random.default_rng(7).integers(0, 256, (800, 800, 3), dtype=np.uint8)
embedded = embed_watermark(
img,
'hello world',
password=42,
quality='balanced',
)
assert embedded['ok'], f'Embed failed: {embedded}'
assert embedded['image'] is not None, f'Embed image missing: {embedded}'
assert embedded['engine_used'] in {'legacy', 'neural'}, embedded
extracted = extract_watermark(
embedded['image'],
password=42,
quality='balanced',
)
assert extracted['ok'], f'Extract failed: {extracted}'
assert extracted['wm'].startswith('fp:'), f'Fingerprint roundtrip failed: {extracted}'
assert extracted.get('payloadMode') == 'fingerprint64', extracted
text16_embedded = embed_watermark(
img,
'hello world',
password=42,
quality='balanced',
payload_mode='text16',
)
assert text16_embedded['ok'], f'Text16 embed failed: {text16_embedded}'
text16_extracted = extract_watermark(
text16_embedded['image'],
password=42,
quality='balanced',
payload_mode='text16',
)
assert text16_extracted['ok'], f'Text16 extract failed: {text16_extracted}'
assert text16_extracted['wm'] == 'hello world', f'Text16 roundtrip failed: {text16_extracted}'
print('All tests passed.')
mlwm-unit-tests:
runs-on: ubuntu-latest
name: MLWM unit tests
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: '3.10'
- name: Install dependencies
run: |
pip install -r blind_watermark/requirements.txt
- name: Run MLWM unit tests
run: |
python -m unittest discover -s blind_watermark/tests
typecheck:
runs-on: ubuntu-latest
name: Typecheck
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: '24'
cache: npm
- name: Install dependencies
run: npm ci
- name: Run TypeScript checks
run: npm run typecheck