test(image-watermark): update smoke for fingerprint payload #64
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |