Update Guide Screenshots

VerifiedSafe

Verifies NiFi custom UI via Chrome, takes fresh screenshots, and updates documentation guides to match current UI state.

Sby Skills Guide Bot
DocumentationIntermediate
506/2/2026
Claude Code
#nifi#chrome-automation#screenshots#documentation-update

Recommended for

Our review

Verifies the NiFi custom UI via Chrome, takes fresh screenshots, and updates documentation guides in doc/guides/.

Strengths

  • Automates screenshot capture and documentation text updates.
  • Detects differences between live UI and existing documentation.
  • Provides separate modes for verification, screenshots only, and text updates.

Limitations

  • Requires NiFi and Keycloak containers to be running.
  • Depends on the Claude-in-Chrome extension for browsing.
  • Not applicable to other environments or applications.
When to use it

When you need to synchronize documentation with changes in the NiFi UI.

When not to use it

When working on documentation that does not involve the NiFi UI or when you lack access to the test environment.

Security analysis

Safe
Quality score90/100

The skill automates UI verification, screenshot capture, and documentation updates for a local development environment. It uses Chrome automation and Playwright headless to interact with a local NiFi instance. No destructive commands, external payloads, or data exfiltration are present. The only script execution is a generated Playwright script that follows the provided template, and container status is checked via a pre-existing bash script. Overall, the operations are legitimate and low risk.

No concerns found

Examples

Full update guide screenshots
/update-guide-screenshots
Verify UI only
/update-guide-screenshots verify
Take screenshots only
/update-guide-screenshots screenshots

name: update-guide-screenshots description: Verify NiFi custom UI tabs via Chrome and update doc/guides screenshots and guides user-invocable: true allowed-tools: Bash, Read, Write, Edit, Glob, Grep, mcp__claude-in-chrome__*

Update Guide Screenshots Skill

Verifies the NiFi custom UI against existing documentation, takes fresh screenshots, and updates doc/guides/ content to match the current UI.

Parameters

Optional argument selects the workflow:

  • /update-guide-screenshots — Full workflow: verify UI via Chrome, take screenshots, update docs
  • /update-guide-screenshots verify — Chrome-only: browse UI tabs and report differences (no file changes)
  • /update-guide-screenshots screenshots — Take screenshots only (Playwright headless, no Chrome needed)
  • /update-guide-screenshots docs — Update documentation text only (assumes screenshots are current)

Prerequisites

  • NiFi and Keycloak containers must be running. Use /deploy start if not.
  • For verify mode: Chrome browser with Claude-in-Chrome extension connected.
  • For screenshots and default mode: Playwright installed in e-2-e-playwright/.

Workflow

Step 1: Verify Containers Running

./integration-testing/src/main/docker/check-status.sh --quiet

If not healthy, instruct the user to run /deploy start first. Do NOT start containers from this skill.

Step 2: Read Current Documentation

Read these files to understand the current documented state:

  • doc/guides/QuickStart.adoc — Main guide with processor and gateway documentation
  • doc/guides/IssuerConfigPropertiesGuide.adoc — Detailed issuer configuration walkthrough

Also read all existing screenshot PNGs in doc/guides/ to compare against the live UI.

Step 3: Verify UI via Chrome (for verify and default mode)

Use Chrome browser automation to navigate the live NiFi UI and compare against documentation.

3a. Log in to NiFi

  1. Navigate to https://localhost:9095/nifi/
  2. Enter credentials: testUser / drowssap
  3. Click Log in
  4. Wait for canvas to load (URL contains /process-groups/)

3b. Inspect JWT Processor Custom UI

  1. From root canvas, double-click the JWT Auth Pipeline process group
  2. Right-click the MultiIssuerJWTTokenAuthenticator processor → click Advanced
  3. Wait for custom UI to load
  4. Verify and screenshot each tab:
    • Configuration — Issuer form with Name, JWKS Source Type, Issuer URI, JWKS URL, Audience, Client ID
    • Token Verification — Token input textarea, Verify Token / Clear buttons, Verification Results area
    • Metrics — Shows "Metrics Not Available" message for JWT processor
    • Help — Accordion sections: Getting Started, Issuer Configuration, Authorization Rules, Token Verification, Troubleshooting, Additional Resources
  5. Click Back to Processor to return

3c. Inspect REST API Gateway Custom UI

  1. Navigate to root canvas, double-click the REST API Gateway process group
  2. Right-click the RestApiGateway processor → click Advanced
  3. Wait for custom UI to load
  4. Verify and screenshot each tab:
    • Endpoint Configuration — Global Settings table + route table with Name, Path, Methods, Enabled, Actions columns
    • Endpoint Tester — Route dropdown, Method dropdown, Authorization Token textarea, Send Request button
    • Issuer Configuration — Issuer table with Name, JWKS Source, Type, Issuer URI, Actions columns
    • Token Verification — Same as JWT processor Token Verification
    • Metrics — Gateway Metrics with Token Validation, HTTP Security, Gateway Events sections
    • Help — REST API Gateway accordion with Key Features, Tabs listing, Troubleshooting, Additional Resources

Also capture the Route Editor by clicking Edit on a route from the Endpoint Configuration tab.

3d. Report Differences

Compare what was seen in Chrome against the existing screenshots and documentation text. Report:

  • New tabs not documented
  • Removed tabs still documented
  • Changed content/layout within tabs
  • Incorrect text descriptions

Step 4: Take Fresh Screenshots (for screenshots and default mode)

Write a temporary Playwright script to e-2-e-playwright/take-screenshots.mjs and run it. The script must:

  1. Use @playwright/test (installed in e-2-e-playwright/node_modules)
  2. Launch headless Chromium with --ignore-certificate-errors, ignoreHTTPSErrors: true, and locale: 'en-US' to force English UI
  3. Set viewport to 1456 x 816 for consistent screenshot dimensions
  4. Log in via the NiFi login form (testUser / drowssap)
  5. Use the NiFi REST API (/nifi-api/flow/process-groups/root) to discover processor IDs
  6. Navigate to each processor's advanced UI via URL: https://localhost:9095/nifi/#/process-groups/{pgId}/Processor/{procId}/advanced
  7. Wait for the iframe to load and locate it with page.waitForSelector('iframe') + contentFrame()
  8. Click tabs WITHIN THE IFRAME using frame.locator('a:visible').filter({ hasText: /^Tab Name$/ })
    • IMPORTANT: Use :visible filter — some tabs have hidden duplicates with class "hidden"
  9. Take page.screenshot({ fullPage: true }) for each tab (captures the full NiFi shell including iframe)
  10. Save screenshots to doc/guides/ with these exact filenames

JWT Processor screenshots:

| Filename | Tab | Notes | |----------|-----|-------| | ui-configuration-tab.png | Configuration | Default tab, shows issuer form | | ui-token-verification-tab.png | Token Verification | Empty token input state |

Gateway Processor screenshots:

| Filename | Tab | Notes | |----------|-----|-------| | ui-gateway-endpoint-configuration.png | Endpoint Configuration | Default tab, shows routes table | | ui-gateway-route-editor.png | Endpoint Configuration | After clicking Edit on first route | | ui-gateway-endpoint-tester.png | Endpoint Tester | Empty state | | ui-gateway-endpoint-tester-response.png | Endpoint Tester | After clicking Send Request | | ui-gateway-issuer-configuration.png | Issuer Configuration | Shows issuers table | | ui-gateway-token-verification.png | Token Verification | Empty token input state | | ui-gateway-metrics.png | Metrics | Shows Gateway Metrics sections | | ui-gateway-help.png | Help | Shows Component Help accordion |

After the script runs successfully, delete the temporary take-screenshots.mjs file.

Step 5: Update Guide Documentation (for docs and default mode)

Update doc/guides/QuickStart.adoc and doc/guides/IssuerConfigPropertiesGuide.adoc based on differences found:

Common things to check and update:

  • Tab counts and names in gateway description (e.g., "four tabs" → "six tabs")
  • Tab list in gateway introduction paragraph
  • New sections for any tabs not yet documented (with image:: directive and description)
  • Removed sections for tabs that no longer exist
  • Screenshot references — ensure every image:: directive matches an actual file in doc/guides/
  • Login credentials — must be testUser / drowssap (not admin/adminadminadmin)
  • Cross-reference anchors — verify link: targets resolve correctly

Do NOT change sections about tabs whose UI has not changed. Only update what is actually different.

Step 6: Report Summary

Output a summary table showing:

  • Which screenshots were updated/added/unchanged
  • Which documentation sections were modified
  • Any issues found that require manual attention

Key Paths

| Path | Purpose | |------|---------| | doc/guides/QuickStart.adoc | Main quick start guide | | doc/guides/IssuerConfigPropertiesGuide.adoc | Detailed issuer configuration guide | | doc/guides/*.png | Guide screenshots | | e-2-e-playwright/ | Playwright project root (has node_modules/) | | e-2-e-playwright/utils/constants.js | Processor type names for API lookups |

Critical Rules

  • NEVER start or stop Docker containers — this skill only reads the running UI
  • ALWAYS delete the temporary take-screenshots.mjs after use
  • ALWAYS use :visible selector when clicking tabs in iframes (hidden duplicates exist)
  • Screenshots MUST use fullPage: true to capture the complete NiFi shell
  • The Playwright script MUST run from the e-2-e-playwright/ directory (for node_modules resolution)
  • Do NOT update screenshots that haven't visually changed — compare before overwriting
  • NiFi custom UI loads inside an iframe on the /advanced URL — all tab interactions must target the iframe's contentFrame()
  • Screenshots MUST always be in English — the UI auto-detects browser language via navigator.language, so Playwright must launch with locale: 'en-US' to prevent German or other translations from appearing
Related skills