[{"data":1,"prerenderedAt":1923},["ShallowReactive",2],{"contentNavigation":3,"docs-\u002Fdocs\u002Fmanage-targets\u002Fplaywright-specs":635,"\u002Fdocs\u002Fmanage-targets\u002Fplaywright-specs-surround":1910,"mdc-7wp8oc-key":1913},[4,38,196,366,475,501,524,541],{"title":5,"path":6,"stem":7,"meta":8},"Welcome","\u002Fdocs","docs\u002Findex",{"icon":9,"layout":10,"cards":18},"hands-clapping",{"title":11,"description":13,"tableOfContents":15,"outline":16,"pagination":17},{"visible":12},true,{"visible":14},false,{"visible":12},{"visible":12},{"visible":12},[19,23,27,31,35],{"title":20,"description":21,"path":22},"Getting Started","Quick Start Guide","\u002Fdocs\u002Fgetting-started\u002Fquick-scan-guide",{"title":24,"description":25,"path":26},"Manage Targets","Target Configuration","\u002Fdocs\u002Fmanage-targets\u002Ftarget-configuration",{"title":28,"description":29,"path":30},"Manage Scans","View Scan Findings","\u002Fdocs\u002Fmanage-scans\u002Fscan-report",{"title":32,"description":33,"path":34},"Manage Organizations","Understanding User Roles","\u002Fdocs\u002Fmanage-organizations\u002Funderstanding-user-roles",{"title":20,"description":36,"path":37},"Concepts","\u002Fdocs\u002Fgetting-started\u002Fconcepts",{"title":20,"meta":39,"path":40,"stem":41,"children":42,"page":14},{},"\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[43,49,54,80,87,122,167,171,177,183,190],{"title":44,"path":45,"stem":46,"meta":47},"Welcome to ZeroThreat","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002F1.getting-started\u002F01.quickstart",{"icon":48},"bullseye",{"title":50,"path":22,"stem":51,"meta":52},"Quick Scan Guide","docs\u002F1.getting-started\u002F02.quick-scan-guide",{"icon":53},"globe",{"title":55,"path":56,"stem":57,"children":58,"page":-1,"meta":60},"Authenticated Scan","\u002Fdocs\u002Fgetting-started\u002Fauthenticated-scan","docs\u002F1.getting-started\u002F03.authenticated-scan\u002Findex",[59,62,68,74],{"title":55,"path":56,"stem":57,"meta":60},{"icon":61},"shield-virus",{"title":63,"path":64,"stem":65,"meta":66},"Scan with Login Sequence","\u002Fdocs\u002Fgetting-started\u002Fauthenticated-scan\u002Fscan-with-login-sequence","docs\u002F1.getting-started\u002F03.authenticated-scan\u002F2.scan-with-login-sequence",{"icon":67},"expand",{"title":69,"path":70,"stem":71,"meta":72},"Scan MFA App","\u002Fdocs\u002Fgetting-started\u002Fauthenticated-scan\u002Fscan-mfa-app","docs\u002F1.getting-started\u002F03.authenticated-scan\u002F3.scan-mfa-app",{"imageSrc":73},"\u002FImages\u002Fscan-mfa-app-icon.svg",{"title":75,"path":76,"stem":77,"meta":78},"Scan Recorded Pages & Actions","\u002Fdocs\u002Fgetting-started\u002Fauthenticated-scan\u002Fscan-recorded-pages-and-actions","docs\u002F1.getting-started\u002F03.authenticated-scan\u002F4.scan-recorded-pages-and-actions",{"imageSrc":79},"\u002FImages\u002Fscan-navigation-sequence-icon.svg",{"title":81,"path":82,"stem":83,"meta":84},"Scan Profile","\u002Fdocs\u002Fgetting-started\u002Fscan-profile","docs\u002F1.getting-started\u002F04.scan-profile",{"icon":85,"imageSrc":86},null,"\u002FImages\u002Fscan-profile-icon.svg",{"title":88,"path":89,"stem":90,"children":91,"page":-1,"meta":93},"API Scan","\u002Fdocs\u002Fgetting-started\u002Fapi-scan","docs\u002F1.getting-started\u002F05.api-scan\u002Findex",[92,111,114,118],{"title":88,"path":89,"stem":90,"meta":93},{"imageSrc":94,"cards":95},"\u002FImages\u002Fapi-scan-icon.svg",[96,101,106],{"icon":97,"title":98,"path":99,"description":100},"file-circle-plus","Creating a Collection","\u002Fdocs\u002Fgetting-started\u002Fapi-scan\u002Fcreating-a-collection","Learn how to import and configure your API definitions in ZeroThreat.",{"icon":102,"title":103,"path":104,"description":105},"radar","Unauthenticated API Scan","\u002Fdocs\u002Fgetting-started\u002Fapi-scan\u002Funauthenticated-api-scan","Run scans on public-facing API endpoints without authentication.",{"icon":107,"title":108,"path":109,"description":110},"file-magnifying-glass","Authenticated API Scan","\u002Fdocs\u002Fgetting-started\u002Fapi-scan\u002Fauthenticated-api-scan","Configure and scan protected endpoints that require authentication.",{"title":98,"path":99,"stem":112,"meta":113},"docs\u002F1.getting-started\u002F05.api-scan\u002F2.creating-a-collection",{"icon":97},{"title":103,"path":104,"stem":115,"meta":116},"docs\u002F1.getting-started\u002F05.api-scan\u002F3.unauthenticated-api-scan",{"imageSrc":117},"\u002FImages\u002Funauthenticated-api-scan-icon.svg",{"title":108,"path":109,"stem":119,"meta":120},"docs\u002F1.getting-started\u002F05.api-scan\u002F4.authenticated-api-scan",{"imageSrc":121},"\u002FImages\u002Fauthenticated-api-scan-icon.svg",{"title":123,"path":124,"stem":125,"meta":126},"Scan Results","\u002Fdocs\u002Fgetting-started\u002Fscan-results","docs\u002F1.getting-started\u002F06.scan-results",{"icon":127,"cards":128},"square-poll-horizontal",[129,133,137,142,147,152,157,162],{"icon":127,"title":130,"path":131,"description":132},"Scanner","\u002Fdocs\u002Fmanage-scans\u002Fscan-report\u002Fscanner","Displays real-time scan progress, including authenticated and unauthenticated crawling, along with OWASP Top 10 checks.",{"icon":53,"title":134,"path":135,"description":136},"Web App Vulnerabilities","\u002Fdocs\u002Fmanage-scans\u002Fscan-report\u002Fweb-app-vulnerabilities","Lists detected security issues in web applications, categorized by severity, with detailed remediation steps.",{"icon":138,"title":139,"path":140,"description":141},"file-circle-check","Detected API Vulnerabilities","\u002Fdocs\u002Fmanage-scans\u002Fscan-report\u002Fdetected-apis-vulnerabilities","Identifies all the security flaws found in a particular API endpoint, showing affected requests and responses.",{"icon":143,"title":144,"path":145,"description":146},"circle-info","Information Exposure","\u002Fdocs\u002Fmanage-scans\u002Fscan-report\u002Finformation-exposure","Highlights sensitive data leaks like PII, secret data leaks like credentials, and cloud misconfigurations.",{"icon":148,"title":149,"path":150,"description":151},"certificate","SSL Certificate Scan","\u002Fdocs\u002Fmanage-scans\u002Fscan-report\u002Fssl-certificate","Analyzes SSL\u002FTLS configurations, checking for vulnerabilities, expiration status, and compliance issues.",{"icon":153,"title":154,"path":155,"description":156},"cube","Vulnerable Version Detection","\u002Fdocs\u002Fmanage-scans\u002Fscan-report\u002Fvulnerable-version-detection","Detects outdated JavaScript libraries and server-side technologies with known security risks.",{"icon":158,"title":159,"path":160,"description":161},"database","Server Ports Scan","\u002Fdocs\u002Fmanage-scans\u002Fscan-report\u002Fserver-ports-scan","Scans open ports on the server, assessing potential risks and providing mitigation strategies.",{"icon":163,"title":164,"path":165,"description":166},"envelope","Mail Configuration","\u002Fdocs\u002Fmanage-scans\u002Fscan-report\u002Fmail-configuration","Evaluates the mail server for misconfigurations like open relays and reverse DNS mismatches.",{"title":36,"path":37,"stem":168,"meta":169},"docs\u002F1.getting-started\u002F07.concepts",{"hidden":12,"noRobotsIndex":12,"icon":170},"lightbulb",{"title":172,"path":173,"stem":174,"meta":175},"TroubleShoot","\u002Fdocs\u002Fgetting-started\u002Ftroubleshoot","docs\u002F1.getting-started\u002F08.troubleshoot",{"icon":176},"puzzle-piece",{"title":178,"path":179,"stem":180,"meta":181},"FAQs","\u002Fdocs\u002Fgetting-started\u002Ffaqs","docs\u002F1.getting-started\u002F09.faqs",{"icon":182},"question-circle",{"title":184,"path":185,"stem":186,"meta":187},"Vulnerability Registry","\u002Fdocs\u002Fgetting-started\u002Fvulnerability-registry","docs\u002F1.getting-started\u002F10.vulnerability-registry",{"icon":188,"layout":189},"bug","default",{"title":191,"path":192,"stem":193,"meta":194},"Best Practices","\u002Fdocs\u002Fgetting-started\u002Fbest-practices","docs\u002F1.getting-started\u002F11.best-practices",{"icon":195},"clipboard",{"title":24,"meta":197,"path":198,"stem":199,"children":200,"page":14},{},"\u002Fdocs\u002Fmanage-targets","docs\u002F2.manage-targets",[201,207,213,219,223,228,288,335,360],{"title":202,"path":203,"stem":204,"meta":205},"Targets","\u002Fdocs\u002Fmanage-targets\u002Ftargets-section","docs\u002F2.manage-targets\u002F01.targets-section",{"icon":206},"crosshairs",{"title":208,"path":209,"stem":210,"meta":211},"Add a Target","\u002Fdocs\u002Fmanage-targets\u002Fadd-a-target","docs\u002F2.manage-targets\u002F2.add-a-target",{"icon":212},"plus",{"title":214,"path":215,"stem":216,"meta":217},"Target Verification","\u002Fdocs\u002Fmanage-targets\u002Ftarget-verification","docs\u002F2.manage-targets\u002F3.target-verification",{"icon":218},"check",{"title":25,"path":26,"stem":220,"meta":221},"docs\u002F2.manage-targets\u002F4.target-configuration",{"icon":222},"gear",{"title":224,"path":225,"stem":226,"meta":227},"Add Custom Headers","\u002Fdocs\u002Fmanage-targets\u002Fadd-custom-headers","docs\u002F2.manage-targets\u002F5.add-custom-headers",{"icon":97},{"title":229,"path":230,"stem":231,"children":232,"page":-1,"meta":234},"CI\u002FCD Integration","\u002Fdocs\u002Fmanage-targets\u002Fci-cd-integration","docs\u002F2.manage-targets\u002F6.ci-cd-integration\u002Findex",[233,266,270,274,279,284],{"title":229,"path":230,"stem":231,"meta":234},{"icon":235,"cards":236},"repeat",[237,241,245,249,253,257,260,262,264],{"title":238,"path":239,"description":240},"GitHub Actions","\u002Fdocs\u002Fmanage-targets\u002Fci-cd-integration\u002Fgithub-actions","Integrate ZeroThreat scans using GitHub workflows, with support for triggers, and authenticated testing.",{"title":242,"path":243,"description":244},"Azure Pipelines","\u002Fdocs\u002Fmanage-targets\u002Fci-cd-integration\u002Fazure-pipelines","Integrate ZeroThreat Scans in Azure DevOps with customizable YAML pipelines that suite your workflow.",{"title":246,"path":247,"description":248},"CircleCI","\u002Fdocs\u002Fmanage-targets\u002Fci-cd-integration\u002Fcircle-ci","Integrate ZeroThreat scans using CircleCI to trigger automated scans in your CI\u002FCD pieplines that suite your needs.",{"title":250,"path":251,"description":252},"GitLab CI\u002FCD","\u002Fdocs\u002Fmanage-targets\u002Fci-cd-integration\u002Fgitlab","Integrate ZeroThreat Scans in into GitLab CI\u002FCD pipelines that suite your workflow.",{"title":254,"path":255,"description":256},"AWS CI\u002FCD","\u002Fdocs\u002Fmanage-targets\u002Fci-cd-integration\u002Faws-ci-cd","Integrate ZeroThreat Scans in into AWS CI\u002FCD pipelines that suite your workflow.",{"title":258,"description":259},"Jenkins","Coming Soon",{"title":261,"description":259},"TeamCity",{"title":263,"description":259},"Bamboo",{"title":265,"description":259},"Travis CI",{"title":238,"path":239,"stem":267,"meta":268},"docs\u002F2.manage-targets\u002F6.ci-cd-integration\u002F1.github-actions",{"icon":269},"fa-brands fa-github",{"title":242,"path":243,"stem":271,"meta":272},"docs\u002F2.manage-targets\u002F6.ci-cd-integration\u002F2.azure-pipelines",{"imageSrc":273},"\u002FImages\u002Fazure-pipeline.svg",{"title":275,"path":247,"stem":276,"meta":277},"Circle Ci","docs\u002F2.manage-targets\u002F6.ci-cd-integration\u002F3.circle-ci",{"imageSrc":278},"\u002FImages\u002Fcircle-ci.svg",{"title":280,"path":251,"stem":281,"meta":282},"Gitlab","docs\u002F2.manage-targets\u002F6.ci-cd-integration\u002F4.gitlab",{"icon":283},"fa-brands fa-gitlab",{"title":254,"path":255,"stem":285,"meta":286},"docs\u002F2.manage-targets\u002F6.ci-cd-integration\u002F5.aws-ci-cd",{"icon":287},"fa-brands fa-aws",{"title":289,"path":290,"stem":291,"children":292,"page":-1,"meta":294},"Issue Tracking Integration","\u002Fdocs\u002Fmanage-targets\u002Fissue-tracking","docs\u002F2.manage-targets\u002F7.issue-tracking\u002Findex",[293,317,321,325,328,331],{"title":289,"path":290,"stem":291,"meta":294},{"icon":295,"cards":296},"id-card",[297,301,305,309,313],{"title":298,"path":299,"description":300},"Jira","\u002Fdocs\u002Fmanage-targets\u002Fissue-tracking\u002Fjira","Create Jira tickets from scan findings and assign them to specific boards, projects, and sprints with full vulnerability details.",{"title":302,"description":303,"path":304},"Azure Boards","Create Azure Boards work items from scan findings and assign them to specific projects, and boards with complete vulnerabiltiy details.","\u002Fdocs\u002Fmanage-targets\u002Fissue-tracking\u002Fazure-board",{"title":306,"description":307,"path":308},"GitHub Issues","Create GitHub issues from scan findings and assign them to specific repositories and Projects with full vulnerability details.","\u002Fdocs\u002Fmanage-targets\u002Fissue-tracking\u002Fgithub-issues",{"title":310,"description":311,"path":312},"GitLab Issues","Create GitLab issues from scan findings and assign them to specific projects and boards with full vulnerability details.","\u002Fdocs\u002Fmanage-targets\u002Fissue-tracking\u002Fgitlab-issues",{"title":314,"description":315,"path":316},"Trello","Create Trello cards from scan findings and assign them to specific boards and lists with full vulnerability details.","\u002Fdocs\u002Fmanage-targets\u002Fissue-tracking\u002Ftrello",{"title":298,"path":299,"stem":318,"meta":319},"docs\u002F2.manage-targets\u002F7.issue-tracking\u002F1.jira",{"icon":320},"fa-brands fa-atlassian",{"title":302,"path":304,"stem":322,"meta":323},"docs\u002F2.manage-targets\u002F7.issue-tracking\u002F2.azure-board",{"imageSrc":324},"\u002FImages\u002FAzure_Boards.svg",{"title":306,"path":308,"stem":326,"meta":327},"docs\u002F2.manage-targets\u002F7.issue-tracking\u002F3.github-issues",{"icon":269},{"title":310,"path":312,"stem":329,"meta":330},"docs\u002F2.manage-targets\u002F7.issue-tracking\u002F4.gitlab-issues",{"icon":283},{"title":314,"path":316,"stem":332,"meta":333},"docs\u002F2.manage-targets\u002F7.issue-tracking\u002F5.trello",{"icon":334},"fa-brands fa-trello",{"title":336,"path":337,"stem":338,"children":339,"page":-1,"meta":341},"Notification Integration","\u002Fdocs\u002Fmanage-targets\u002Fnotification-integration","docs\u002F2.manage-targets\u002F8.notification-integration\u002Findex",[340,352,356],{"title":336,"path":337,"stem":338,"meta":341},{"icon":342,"cards":343},"bell",[344,348],{"title":345,"path":346,"description":347},"Slack","\u002Fdocs\u002Fmanage-targets\u002Fnotification-integration\u002Fslack","Receive scan alerts in any Slack channel of your choice using incoming webhooks.",{"title":349,"description":350,"path":351},"Microsoft Teams","Use Teams workflows to post scan notifications into designated channels.","\u002Fdocs\u002Fmanage-targets\u002Fnotification-integration\u002Fmicrosoft-teams",{"title":345,"path":346,"stem":353,"meta":354},"docs\u002F2.manage-targets\u002F8.notification-integration\u002F1.slack",{"icon":355},"fa-brands fa-slack",{"title":349,"path":351,"stem":357,"meta":358},"docs\u002F2.manage-targets\u002F8.notification-integration\u002F2.microsoft-teams",{"imageSrc":359},"\u002FImages\u002FMicrosoft_Teams.svg",{"title":361,"path":362,"stem":363,"meta":364},"Playwright Specs","\u002Fdocs\u002Fmanage-targets\u002Fplaywright-specs","docs\u002F2.manage-targets\u002F9.playwright-specs",{"imageSrc":365},"\u002FImages\u002Fplaywright-specs.svg",{"title":28,"meta":367,"path":368,"stem":369,"children":370,"page":14},{},"\u002Fdocs\u002Fmanage-scans","docs\u002F3.manage-scans",[371,377,445,451,457,463,469],{"title":372,"path":373,"stem":374,"meta":375},"Scans","\u002Fdocs\u002Fmanage-scans\u002Fscans-section","docs\u002F3.manage-scans\u002F1.scans-section",{"icon":376},"magnifying-glass-chart",{"title":378,"path":30,"stem":379,"children":380,"page":-1,"meta":382},"Scan Report","docs\u002F3.manage-scans\u002F2.scan-report\u002Findex",[381,403,406,410,414,418,422,426,431,435,439],{"title":378,"path":30,"stem":379,"meta":382},{"icon":383,"cards":384},"file-lines",[385,387,391,393,396,397,399,400,401],{"icon":127,"title":130,"path":131,"description":386},"Displays real-time scan progress, including crawling and OWASP Top 10 vulnerabilities.",{"icon":383,"title":388,"path":389,"description":390},"Scan Summary","\u002Fdocs\u002Fmanage-scans\u002Fscan-report\u002Fscan-summary","Provides a high-level overview of the security posture of the entire scanned application",{"icon":53,"title":134,"path":135,"description":392},"Lists detected security issues in web applications, categorized by severity, with detailed remediation steps",{"icon":138,"title":394,"path":140,"description":395},"Detected API vulnerabilities","Identifies all the security flaws found in a particular API endpoint, showing affected requests",{"icon":143,"title":144,"path":145,"description":146},{"icon":148,"title":398,"path":150,"description":151},"SSL Certificate",{"icon":153,"title":154,"path":155,"description":156},{"icon":158,"title":159,"path":160,"description":161},{"icon":163,"title":164,"path":165,"description":402},"Evaluates the mail server for misconfigurations like open relays and reverse DNS mismatches",{"title":130,"path":131,"stem":404,"meta":405},"docs\u002F3.manage-scans\u002F2.scan-report\u002F01.scanner",{"icon":67},{"title":388,"path":389,"stem":407,"meta":408},"docs\u002F3.manage-scans\u002F2.scan-report\u002F02.scan-summary",{"icon":409},"list-check",{"title":134,"path":135,"stem":411,"meta":412},"docs\u002F3.manage-scans\u002F2.scan-report\u002F03.web-app-vulnerabilities",{"imageSrc":413},"\u002FImages\u002Fgravity-ui--diamond-exclamation.svg",{"title":394,"path":140,"stem":415,"meta":416},"docs\u002F3.manage-scans\u002F2.scan-report\u002F04.detected-apis-vulnerabilities",{"imageSrc":417},"\u002FImages\u002Fuil--exclamation-octagon.svg",{"title":144,"path":145,"stem":419,"meta":420},"docs\u002F3.manage-scans\u002F2.scan-report\u002F05.information-exposure",{"imageSrc":421},"\u002FImages\u002Fstreamline--arrow-expand.svg",{"title":398,"path":150,"stem":423,"meta":424},"docs\u002F3.manage-scans\u002F2.scan-report\u002F06.ssl-certificate",{"imageSrc":425},"\u002FImages\u002Fla--certificate.svg",{"title":427,"path":155,"stem":428,"meta":429},"Vulnerable Version detection","docs\u002F3.manage-scans\u002F2.scan-report\u002F07.vulnerable-version-detection",{"imageSrc":430},"\u002FImages\u002Ff7--exclamationmark-square.svg",{"title":159,"path":160,"stem":432,"meta":433},"docs\u002F3.manage-scans\u002F2.scan-report\u002F08.server-ports-scan",{"imageSrc":434},"\u002FImages\u002Ftdesign--server.svg",{"title":164,"path":165,"stem":436,"meta":437},"docs\u002F3.manage-scans\u002F2.scan-report\u002F09.mail-configuration",{"imageSrc":438},"\u002FImages\u002Ftabler--mail.svg",{"title":440,"path":441,"stem":442,"meta":443},"Compliance","\u002Fdocs\u002Fmanage-scans\u002Fscan-report\u002Fcompliance","docs\u002F3.manage-scans\u002F2.scan-report\u002F10. Compliance",{"imageSrc":444},"\u002FImages\u002Fgg--list.svg",{"title":446,"path":447,"stem":448,"meta":449},"Download Scan Report","\u002Fdocs\u002Fmanage-scans\u002Fdownload-report","docs\u002F3.manage-scans\u002F3.download-report",{"icon":450},"download",{"title":452,"path":453,"stem":454,"meta":455},"Share Scan Results","\u002Fdocs\u002Fmanage-scans\u002Fshare-scan-results","docs\u002F3.manage-scans\u002F4.share-scan-results",{"icon":456},"up-right-from-square",{"title":458,"path":459,"stem":460,"meta":461},"Retest Vulnerability","\u002Fdocs\u002Fmanage-scans\u002Fretest-vulnerability","docs\u002F3.manage-scans\u002F5.retest-vulnerability",{"icon":462},"rotate-right",{"title":464,"path":465,"stem":466,"meta":467},"Schedule Scan","\u002Fdocs\u002Fmanage-scans\u002Fschedule-scan","docs\u002F3.manage-scans\u002F6.schedule-scan",{"icon":468},"calendar-days",{"title":470,"path":471,"stem":472,"meta":473},"API Discovery from Code","\u002Fdocs\u002Fmanage-scans\u002Fapi-discovery-from-code","docs\u002F3.manage-scans\u002F7.api-discovery-from-code",{"icon":474},"fa-file-code",{"title":32,"meta":476,"path":477,"stem":478,"children":479,"page":14},{},"\u002Fdocs\u002Fmanage-organizations","docs\u002F4.manage-organizations",[480,492,496],{"title":481,"path":482,"stem":483,"meta":484},"Manage Organization","\u002Fdocs\u002Fmanage-organizations\u002Fmanage-organization","docs\u002F4.manage-organizations\u002F1.manage-organization",{"icon":485,"cards":486},"building",[487,489],{"title":32,"description":488,"path":34},"Understanding Roles",{"title":481,"description":490,"path":491},"How to add new User","\u002Fdocs\u002Fmanage-organizations\u002Fadd-user",{"title":33,"path":34,"stem":493,"meta":494},"docs\u002F4.manage-organizations\u002F2.understanding-user-roles",{"icon":495},"user-check",{"title":497,"path":491,"stem":498,"meta":499},"Add User","docs\u002F4.manage-organizations\u002F3.add-user",{"icon":500},"user-plus",{"title":502,"meta":503,"path":504,"stem":505,"children":506,"page":14},"Organization Settings",{},"\u002Fdocs\u002Forganization-settings","docs\u002F5.organization-settings",[507,513,518],{"title":508,"path":509,"stem":510,"meta":511},"Report Branding","\u002Fdocs\u002Forganization-settings\u002Freport-configuration","docs\u002F5.organization-settings\u002F01.report-configuration",{"imageSrc":512},"\u002FImages\u002Freport-configuration.svg",{"title":184,"path":514,"stem":515,"meta":516},"\u002Fdocs\u002Forganization-settings\u002Fvulnerability-registry-configuration","docs\u002F5.organization-settings\u002F02.vulnerability-registry-configuration",{"imageSrc":517},"\u002FImages\u002Fvulnerability-registry-config.svg",{"title":519,"path":520,"stem":521,"meta":522},"Attack Templates","\u002Fdocs\u002Forganization-settings\u002Fattack-templates","docs\u002F5.organization-settings\u002F03.attack-templates",{"imageSrc":523},"\u002FImages\u002Fattack-templates.svg",{"title":525,"path":526,"stem":527,"children":528,"page":14},"Plans","\u002Fdocs\u002Fplans","docs\u002F6.plans",[529,535],{"title":530,"path":531,"stem":532,"meta":533},"ZeroThreat Plans","\u002Fdocs\u002Fplans\u002Fzerothreat-plans","docs\u002F6.plans\u002F01.zerothreat-plans",{"imageSrc":534},"\u002FImages\u002Fzerothreat-plans.svg",{"title":536,"path":537,"stem":538,"meta":539},"Target Association","\u002Fdocs\u002Fplans\u002Ftarget-association","docs\u002F6.plans\u002F02.target-association",{"icon":540},"link",{"title":542,"path":543,"stem":544,"children":545,"page":14},"On Prem","\u002Fdocs\u002Fon-prem","docs\u002F7.on-prem",[546,552,566,572,598],{"title":547,"path":548,"stem":549,"meta":550},"On-Prem","\u002Fdocs\u002Fon-prem\u002Fon-prem","docs\u002F7.on-prem\u002F01.on-prem",{"imageSrc":551},"\u002FImages\u002Fon-prem.svg",{"title":553,"path":554,"stem":555,"children":556,"page":-1,"meta":558},"Installation","\u002Fdocs\u002Fon-prem\u002Finstallation","docs\u002F7.on-prem\u002F02.installation\u002Findex",[557,560],{"title":553,"path":554,"stem":555,"meta":558},{"imageSrc":559},"\u002FImages\u002Finstallation.svg",{"title":561,"path":562,"stem":563,"meta":564},"DNS Binding and Setup","\u002Fdocs\u002Fon-prem\u002Finstallation\u002Fdns-binding-and-setup","docs\u002F7.on-prem\u002F02.installation\u002F01.DNS-binding-and-setup",{"imageSrc":565},"\u002FImages\u002Fdns-binding.svg",{"title":567,"path":568,"stem":569,"meta":570},"License Management","\u002Fdocs\u002Fon-prem\u002Flicense-management","docs\u002F7.on-prem\u002F03.license-management",{"imageSrc":571},"\u002FImages\u002Flicense-management.svg",{"title":573,"path":574,"stem":575,"children":576,"page":-1,"meta":578},"Configuration","\u002Fdocs\u002Fon-prem\u002Fconfiguration","docs\u002F7.on-prem\u002F4.configuration\u002Findex",[577,589,594],{"title":573,"path":574,"stem":575,"meta":578},{"imageSrc":579,"cards":580},"\u002FImages\u002Fconfiguration.svg",[581,585],{"title":582,"path":583,"description":584},"AI Features Configuration","\u002Fdocs\u002Fon-prem\u002Fconfiguration\u002Fai-configuration","ZeroThreat uses AI-driven capabilities across multiple areas of the platform to improve clarity, reduce manual effort, and accelerate security analysis.",{"title":586,"path":587,"description":588},"Mail Server Configuration","\u002Fdocs\u002Fon-prem\u002Fconfiguration\u002Fmail-server-configuration","Mail server configuration allows ZeroThreat to send operational and system-related notifications from your On-Prem deployment.",{"title":590,"path":583,"stem":591,"meta":592},"Gen AI Configuration","docs\u002F7.on-prem\u002F4.configuration\u002F01.AI-configuration",{"imageSrc":593},"\u002FImages\u002Fai-config.svg",{"title":586,"path":587,"stem":595,"meta":596},"docs\u002F7.on-prem\u002F4.configuration\u002F02.mail-server-configuration",{"imageSrc":597},"\u002FImages\u002Fmail-server-config.svg",{"title":289,"path":599,"stem":600,"children":601,"page":-1,"meta":603},"\u002Fdocs\u002Fon-prem\u002Fissue-tracking-integration","docs\u002F7.on-prem\u002F5.issue-tracking-integration\u002Findex",[602,622,626,629,632],{"title":289,"path":599,"stem":600,"meta":603},{"icon":604,"cards":605},"file-circle-exclamation",[606,610,614,618],{"title":607,"path":608,"description":609},"Jira (On-Prem)","\u002Fdocs\u002Fon-prem\u002Fissue-tracking-integration\u002Fjira-on-prem","Create Jira tickets from scan findings and assign them to specific projects and boards with full vulnerability details.",{"title":611,"path":612,"description":613},"GitHub Issues (On-Prem)","\u002Fdocs\u002Fon-prem\u002Fissue-tracking-integration\u002Fgithub-issues-on-prem","Create GitHub issues from scan findings and assign them to repositories and Projects with detailed vulnerability evidence.",{"title":615,"path":616,"description":617},"GitLab Issues (On-Prem)","\u002Fdocs\u002Fon-prem\u002Fissue-tracking-integration\u002Fgitlab-issues-on-prem","Create GitLab issues from scan findings and assign them to specific projects with structured remediation details.",{"title":619,"path":620,"description":621},"Trello (On-Prem)","\u002Fdocs\u002Fon-prem\u002Fissue-tracking-integration\u002Ftrello-on-prem","Create Trello cards from scan findings and organize them into boards and lists with full vulnerability context.",{"title":607,"path":608,"stem":623,"meta":624},"docs\u002F7.on-prem\u002F5.issue-tracking-integration\u002F01.jira-on-prem",{"icon":625},"fa-brands fa-jira",{"title":611,"path":612,"stem":627,"meta":628},"docs\u002F7.on-prem\u002F5.issue-tracking-integration\u002F02.github-issues-on-prem",{"icon":269},{"title":615,"path":616,"stem":630,"meta":631},"docs\u002F7.on-prem\u002F5.issue-tracking-integration\u002F03.gitlab-issues-on-prem",{"icon":283},{"title":619,"path":620,"stem":633,"meta":634},"docs\u002F7.on-prem\u002F5.issue-tracking-integration\u002F04.trello-on-prem",{"icon":334},{"id":636,"title":361,"body":637,"description":1905,"extension":1906,"meta":1907,"navigation":12,"path":362,"seo":1908,"stem":363,"__hash__":1909},"content\u002Fdocs\u002F2.manage-targets\u002F9.playwright-specs.md",{"type":638,"value":639,"toc":1895},"minimark",[640,644,652,684,689,694,700,706,711,719,724,730,734,737,746,749,953,1399,1402,1406,1409,1420,1439,1450,1457,1467,1564,1567,1576,1595,1601,1604,1608,1613,1616,1619,1635,1638,1644,1649,1652,1663,1666,1677,1680,1685,1712,1715,1724,1727,1730,1734,1737,1755,1758,1771,1774,1778,1781,1787,1790,1802,1805,1821,1824,1830,1837,1844,1855,1858,1861,1865,1868,1879,1882,1885,1888,1891],[641,642,643],"p",{},"Traditional automated crawlers lack business context and frequently fail to traverse these workflows correctly. As a result, important parts of the application may remain untested.",[641,645,646,647,651],{},"To address this gap, ZeroThreat supports ",[648,649,650],"strong",{},"Playwright Specs integration",". You can use your existing Playwright test suites to execute real business workflows during security scans. This ensures deeper coverage across conditionally accessible features and complex user flows that automated crawling alone cannot reach.",[653,654,657,664],"hint",{"icon":143,"icon-class":655,"style":656},"text-sky-600","background-color:#f7fcff; border:1px solid #07405a33; color:#1e6995;",[658,659,661],"h5",{"id":660},"feature-availability",[648,662,663],{},"Feature Availability",[665,666,668,669,672,673,676,677,683],"h6",{"id":667},"playwright-specs-integration-is-available-exclusively-in-enterprise-cloud-and-enterprise-on-prem-plans-check-out-zerothreat-plans-page-for-more","Playwright Specs integration is available exclusively in ",[648,670,671],{},"Enterprise Cloud"," and ",[648,674,675],{},"Enterprise On-Prem"," plans. Check out ",[678,679,681],"a",{"href":531,"title":680},"mention",[648,682,530],{}," page for more.",[685,686,688],"h2",{"id":687},"setting-up-playwright-specs-in-zerothreat","Setting Up Playwright Specs in ZeroThreat",[641,690,691],{},[648,692,693],{},"Step 1: Navigate to Targets",[641,695,696,697,699],{},"Go to the ",[648,698,202],{}," section from ZeroThreat dashboard",[701,702],"img",{"src":703,"alt":704,"dataSize":705},"\u002FImages\u002Fimage (77).png","Select Target Image","original",[641,707,708],{},[648,709,710],{},"Step 2: Select the Target",[641,712,713,714,718],{},"Click on the ",[701,715],{"src":716,"alt":704,"dataSize":717},"\u002FImages\u002Fimage (78).png","line"," specific target you wish to configure. This will open the Target Configuration settings.",[641,720,721],{},[648,722,723],{},"Step 3: Open Playwright Specs",[641,725,726,727,729],{},"Inside Target Configuration, click on the ",[648,728,361],{}," section.",[731,732],"fiqure-img",{"source":733},"\u002FImages\u002Fimage (478).png",[641,735,736],{},"You will see two options to upload or connect your Playwright project. However, before importing your Playwright Specs, you must first configure them to run through the ZeroThreat proxy so they can execute correctly during scans.",[685,738,740,741,745],{"id":739},"two-quick-ways-to-create-playwright-specs-optional","Two Quick Ways to Create Playwright Specs (",[742,743,744],"em",{},"Optional",")",[641,747,748],{},"If you do not already have a Playwright project, these are two of the quickest ways to get started from an empty directory and create working specs.",[750,751,752,758,761,768,802,807,825,831,847,853,874,877,887,904,910,921,927,943],"details",{},[753,754,755],"summary",{},[648,756,757],{},"Method 1: Using Playwright Codegen",[641,759,760],{},"This is one of the fastest ways to create Playwright Specs by recording browser interactions.",[762,763,764],"ol",{},[765,766,767],"li",{},"Create and open an empty project folder:",[769,770,771],"u-code",{},[772,773,778],"pre",{"className":774,"code":775,"language":776,"meta":777,"style":777},"language-bash shiki shiki-themes github-light github-dark","mkdir playwright-specs\ncd playwright-specs\n","bash","",[779,780,781,793],"code",{"__ignoreMap":777},[782,783,785,789],"span",{"class":717,"line":784},1,[782,786,788],{"class":787},"sScJk","mkdir",[782,790,792],{"class":791},"sZZnC"," playwright-specs\n",[782,794,796,800],{"class":717,"line":795},2,[782,797,799],{"class":798},"sj4cs","cd",[782,801,792],{"class":791},[762,803,804],{"start":795},[765,805,806],{},"Initialize a Node.js project:",[769,808,809],{},[772,810,812],{"className":774,"code":811,"language":776,"meta":777,"style":777},"npm init -y\n",[779,813,814],{"__ignoreMap":777},[782,815,816,819,822],{"class":717,"line":784},[782,817,818],{"class":787},"npm",[782,820,821],{"class":791}," init",[782,823,824],{"class":798}," -y\n",[762,826,828],{"start":827},3,[765,829,830],{},"Set up Playwright:",[769,832,833],{},[772,834,836],{"className":774,"code":835,"language":776,"meta":777,"style":777},"npm init playwright@latest\n",[779,837,838],{"__ignoreMap":777},[782,839,840,842,844],{"class":717,"line":784},[782,841,818],{"class":787},[782,843,821],{"class":791},[782,845,846],{"class":791}," playwright@latest\n",[762,848,850],{"start":849},4,[765,851,852],{},"Once Playwright is installed, start Codegen against your target application:",[769,854,855],{},[772,856,858],{"className":774,"code":857,"language":776,"meta":777,"style":777},"npx playwright codegen https:\u002F\u002Fyour-target-url.com\n",[779,859,860],{"__ignoreMap":777},[782,861,862,865,868,871],{"class":717,"line":784},[782,863,864],{"class":787},"npx",[782,866,867],{"class":791}," playwright",[782,869,870],{"class":791}," codegen",[782,872,873],{"class":791}," https:\u002F\u002Fyour-target-url.com\n",[641,875,876],{},"This opens a browser and begins recording your actions. As you interact with the application, Playwright generates the corresponding test steps.",[762,878,880],{"start":879},5,[765,881,882,883,886],{},"Create a spec file inside your ",[779,884,885],{},"tests"," folder and save the generated steps into it, for example:",[769,888,889],{},[772,890,892],{"className":774,"code":891,"language":776,"meta":777,"style":777},"mkdir -p tests\n",[779,893,894],{"__ignoreMap":777},[782,895,896,898,901],{"class":717,"line":784},[782,897,788],{"class":787},[782,899,900],{"class":798}," -p",[782,902,903],{"class":791}," tests\n",[762,905,907],{"start":906},6,[765,908,909],{},"Save the recorded flow into a file such as:",[769,911,912],{},[772,913,915],{"className":774,"code":914,"language":776,"meta":777,"style":777},"tests\u002Flogin-flow.spec.ts\n",[779,916,917],{"__ignoreMap":777},[782,918,919],{"class":717,"line":784},[782,920,914],{"class":787},[762,922,924],{"start":923},7,[765,925,926],{},"Run the spec to confirm it works:",[769,928,929],{},[772,930,932],{"className":774,"code":931,"language":776,"meta":777,"style":777},"npx playwright test\n",[779,933,934],{"__ignoreMap":777},[782,935,936,938,940],{"class":717,"line":784},[782,937,864],{"class":787},[782,939,867],{"class":791},[782,941,942],{"class":791}," test\n",[641,944,945,946],{},"For more information, Refer ",[678,947,951],{"href":948,"rel":949},"https:\u002F\u002Fplaywright.dev\u002Fdocs\u002Fcodegen#generate-tests-with-the-playwright-inspector",[950],"nofollow",[648,952,948],{},[750,954,955,960,975,980,998,1003,1017,1022,1036,1039,1044,1063,1066,1139,1144,1151,1154,1243,1246,1257,1262,1265,1268,1278,1281,1286,1297,1302,1312,1315,1326,1331,1345,1348,1367,1372,1375,1380,1383,1388,1391],{},[753,956,957],{},[648,958,959],{},"Method 2: Using Playwright Test Agents - Planner, Generator, and Healer",[641,961,962,963,966,967,970,971,974],{},"This method is useful when you want agent-assisted help to create Playwright Specs from scratch. Playwright provides three built-in test agents: ",[648,964,965],{},"planner",", ",[648,968,969],{},"generator",", and ",[648,972,973],{},"healer",". The usual flow is to let the planner explore the app and produce a Markdown test plan, then let the generator turn that plan into Playwright Test files, and finally use the healer to repair failing tests.",[641,976,977],{},[648,978,979],{},"1. Create and open an empty project folder.",[769,981,982],{},[772,983,984],{"className":774,"code":775,"language":776,"meta":777,"style":777},[779,985,986,992],{"__ignoreMap":777},[782,987,988,990],{"class":717,"line":784},[782,989,788],{"class":787},[782,991,792],{"class":791},[782,993,994,996],{"class":717,"line":795},[782,995,799],{"class":798},[782,997,792],{"class":791},[641,999,1000],{},[648,1001,1002],{},"2. Initialize a Node.js project.",[769,1004,1005],{},[772,1006,1007],{"className":774,"code":811,"language":776,"meta":777,"style":777},[779,1008,1009],{"__ignoreMap":777},[782,1010,1011,1013,1015],{"class":717,"line":784},[782,1012,818],{"class":787},[782,1014,821],{"class":791},[782,1016,824],{"class":798},[641,1018,1019],{},[648,1020,1021],{},"3. Create a Playwright project.",[769,1023,1024],{},[772,1025,1026],{"className":774,"code":835,"language":776,"meta":777,"style":777},[779,1027,1028],{"__ignoreMap":777},[782,1029,1030,1032,1034],{"class":717,"line":784},[782,1031,818],{"class":787},[782,1033,821],{"class":791},[782,1035,846],{"class":791},[641,1037,1038],{},"This creates the base Playwright project structure so you can start generating tests.",[641,1040,1041],{},[648,1042,1043],{},"4. Generate the Playwright agent definitions for VS Code.",[769,1045,1046],{},[772,1047,1049],{"className":774,"code":1048,"language":776,"meta":777,"style":777},"npx playwright init-agents --loop=vscode\n",[779,1050,1051],{"__ignoreMap":777},[782,1052,1053,1055,1057,1060],{"class":717,"line":784},[782,1054,864],{"class":787},[782,1056,867],{"class":791},[782,1058,1059],{"class":791}," init-agents",[782,1061,1062],{"class":798}," --loop=vscode\n",[641,1064,1065],{},"Playwright recommends regenerating these agent definitions whenever Playwright is updated so the agents pick up new tools and instructions. VS Code version 1.105 or later is required for this agentic experience.",[653,1067,1068,1074,1076,1080,1083,1095,1097,1101,1103,1119,1133,1135],{"icon":143,"icon-class":655,"style":656},[658,1069,1071],{"id":1070},"ai-assistant-setup-for-playwright-test-agents",[648,1072,1073],{},"AI Assistant Setup for Playwright Test Agents",[665,1075],{"id":777},[665,1077,1079],{"id":1078},"playwright-test-agents-work-through-an-ai-assistant-in-vs-code-before-using-the-planner-generator-or-healer-make-sure-your-vs-code-ai-setup-is-ready-and-has-access-to-a-supported-model","Playwright Test Agents work through an AI assistant in VS Code. Before using the Planner, Generator, or Healer, make sure your VS Code AI setup is ready and has access to a supported model.",[1081,1082],"br",{},[665,1084,1086,1087,1094],{"id":1085},"if-you-are-using-github-copilot-ensure-copilot-is-installed-signed-in-and-able-to-use-an-available-model-vs-code-also-supports-choosing-between-available-language-models-and-in-some-setups-bringing-your-own-language-model-api-key-refer-to-the-vs-code-ai-language-model-setup-documentation-for-more-details-ai-language-models-in-vs-code","If you are using GitHub Copilot, ensure Copilot is installed, signed in, and able to use an available model. VS Code also supports choosing between available language models and, in some setups, bringing your own language model API key. Refer to the VS Code AI language model setup documentation for more details: ",[678,1088,1091],{"href":1089,"rel":1090},"https:\u002F\u002Fcode.visualstudio.com\u002Fdocs\u002Fcopilot\u002Fcustomization\u002Flanguage-models?utm_source=chatgpt.com",[950],[648,1092,1093],{},"AI language models in VS Code",".",[1081,1096],{},[665,1098,1100],{"id":1099},"run-the-following-command-to-generate-the-playwright-agent-definitions-for-the-vs-code-workflow","Run the following command to generate the Playwright agent definitions for the VS Code workflow:",[1081,1102],{},[769,1104,1105],{},[772,1106,1107],{"className":774,"code":1048,"language":776,"meta":777,"style":777},[779,1108,1109],{"__ignoreMap":777},[782,1110,1111,1113,1115,1117],{"class":717,"line":784},[782,1112,864],{"class":787},[782,1114,867],{"class":791},[782,1116,1059],{"class":791},[782,1118,1062],{"class":798},[665,1120,1122,1123,966,1126,970,1129,1132],{"id":1121},"this-generates-the-playwright-planner-generator-and-healer-agent-definitions-playwright-recommends-regenerating-these-definitions-whenever-playwright-is-updated-so-the-agents-can-use-the-latest-tools-and-instructions","This generates the Playwright ",[648,1124,1125],{},"Planner",[648,1127,1128],{},"Generator",[648,1130,1131],{},"Healer"," agent definitions. Playwright recommends regenerating these definitions whenever Playwright is updated so the agents can use the latest tools and instructions.",[1081,1134],{},[665,1136,1138],{"id":1137},"if-you-are-using-a-different-ai-coding-assistant-such-as-codex-the-generated-playwright-agents-may-not-appear-as-native-selectable-agents-inside-that-assistants-panel-in-that-case-manually-ask-the-assistant-to-read-and-follow-the-generated-playwright-agent-instructions-when-planning-generating-or-healing-tests","If you are using a different AI coding assistant, such as Codex, the generated Playwright agents may not appear as native selectable agents inside that assistant’s panel. In that case, manually ask the assistant to read and follow the generated Playwright agent instructions when planning, generating, or healing tests.",[641,1140,1141],{},[648,1142,1143],{},"5. Create a seed test.",[641,1145,1146,1147,1150],{},"The planner expects a ",[648,1148,1149],{},"seed test"," that sets up the environment needed to interact with your app. Playwright states that the planner uses this test to run initialization such as global setup, project dependencies, fixtures, and hooks, and also uses it as an example for generated tests.",[641,1152,1153],{},"Create a simple seed test such as:",[769,1155,1156],{},[772,1157,1161],{"className":1158,"code":1159,"language":1160,"meta":777,"style":777},"language-ts shiki shiki-themes github-light github-dark","import { test } from '@playwright\u002Ftest';\n\ntest('seed', async ({ page }) => {\n  await page.goto('https:\u002F\u002Fyour-app-url.com');\n});\n","ts",[779,1162,1163,1182,1187,1219,1238],{"__ignoreMap":777},[782,1164,1165,1169,1173,1176,1179],{"class":717,"line":784},[782,1166,1168],{"class":1167},"szBVR","import",[782,1170,1172],{"class":1171},"sVt8B"," { test } ",[782,1174,1175],{"class":1167},"from",[782,1177,1178],{"class":791}," '@playwright\u002Ftest'",[782,1180,1181],{"class":1171},";\n",[782,1183,1184],{"class":717,"line":795},[782,1185,1186],{"emptyLinePlaceholder":12},"\n",[782,1188,1189,1192,1195,1198,1200,1203,1206,1210,1213,1216],{"class":717,"line":827},[782,1190,1191],{"class":787},"test",[782,1193,1194],{"class":1171},"(",[782,1196,1197],{"class":791},"'seed'",[782,1199,966],{"class":1171},[782,1201,1202],{"class":1167},"async",[782,1204,1205],{"class":1171}," ({ ",[782,1207,1209],{"class":1208},"s4XuR","page",[782,1211,1212],{"class":1171}," }) ",[782,1214,1215],{"class":1167},"=>",[782,1217,1218],{"class":1171}," {\n",[782,1220,1221,1224,1227,1230,1232,1235],{"class":717,"line":849},[782,1222,1223],{"class":1167},"  await",[782,1225,1226],{"class":1171}," page.",[782,1228,1229],{"class":787},"goto",[782,1231,1194],{"class":1171},[782,1233,1234],{"class":791},"'https:\u002F\u002Fyour-app-url.com'",[782,1236,1237],{"class":1171},");\n",[782,1239,1240],{"class":717,"line":879},[782,1241,1242],{"class":1171},"});\n",[641,1244,1245],{},"Save it as:",[769,1247,1248],{},[772,1249,1251],{"className":774,"code":1250,"language":776,"meta":777,"style":777},"tests\u002Fseed.spec.ts\n",[779,1252,1253],{"__ignoreMap":777},[782,1254,1255],{"class":717,"line":784},[782,1256,1250],{"class":787},[641,1258,1259],{},[648,1260,1261],{},"6. Ask the planner to create a bounded and precise plan.",[641,1263,1264],{},"The planner explores your app and produces a Markdown test plan for one or more scenarios and user flows. It works best when the request is narrow and explicit. Avoid vague requests like “cover the whole app.” Instead, tell it exactly what flow should be automated, where it starts, what success looks like, and which seed test it should use.",[641,1266,1267],{},"A very basic prompt can be:",[769,1269,1270],{},[772,1271,1276],{"className":1272,"code":1274,"language":1275,"meta":777},[1273],"language-text","Generate a plan for a Playwright spec that logs into the application, opens the billing page, verifies that the invoices table is visible, and logs out. Use tests\u002Fseed.spec.ts as the seed test. Keep the plan focused only on this flow.\n","text",[779,1277,1274],{"__ignoreMap":777},[641,1279,1280],{},"Bounded, precise planner tasks usually give better results than broad ones.",[641,1282,1283],{},[648,1284,1285],{},"7. Review the generated Markdown plan.",[641,1287,1288,1289,1292,1293,1296],{},"The planner produces a human-readable Markdown plan under ",[779,1290,1291],{},"specs\u002F",", such as ",[779,1294,1295],{},"specs\u002Fbasic-operations.md",". Review it before continuing and make sure it matches the exact workflow you want.",[641,1298,1299],{},[648,1300,1301],{},"8. Pass the approved plan to the generator.",[641,1303,1304,1305,1307,1308,1311],{},"The generator takes the Markdown plan from ",[779,1306,1291],{}," and converts it into executable Playwright Test files under ",[779,1309,1310],{},"tests\u002F",". Playwright notes that the generator verifies selectors and assertions live while performing the scenarios.",[641,1313,1314],{},"Your end result should be a clean spec file such as:",[769,1316,1317],{},[772,1318,1320],{"className":774,"code":1319,"language":776,"meta":777,"style":777},"tests\u002Fbilling-flow.spec.ts\n",[779,1321,1322],{"__ignoreMap":777},[782,1323,1324],{"class":717,"line":784},[782,1325,1319],{"class":787},[641,1327,1328],{},[648,1329,1330],{},"9. Run the generated tests.",[769,1332,1333],{},[772,1334,1335],{"className":774,"code":931,"language":776,"meta":777,"style":777},[779,1336,1337],{"__ignoreMap":777},[782,1338,1339,1341,1343],{"class":717,"line":784},[782,1340,864],{"class":787},[782,1342,867],{"class":791},[782,1344,942],{"class":791},[641,1346,1347],{},"Or run only the generated spec:",[769,1349,1350],{},[772,1351,1353],{"className":774,"code":1352,"language":776,"meta":777,"style":777},"npx playwright test tests\u002Fbilling-flow.spec.ts\n",[779,1354,1355],{"__ignoreMap":777},[782,1356,1357,1359,1361,1364],{"class":717,"line":784},[782,1358,864],{"class":787},[782,1360,867],{"class":791},[782,1362,1363],{"class":791}," test",[782,1365,1366],{"class":791}," tests\u002Fbilling-flow.spec.ts\n",[641,1368,1369],{},[648,1370,1371],{},"10. Use the healer if the spec fails.",[641,1373,1374],{},"When a test fails, the healer replays the failing steps, inspects the current UI, suggests a patch such as a locator update or wait adjustment, and reruns the test until it passes or until its guardrails stop the loop.",[641,1376,1377],{},[648,1378,1379],{},"11. Review the healed result and make manual corrections where needed.",[641,1381,1382],{},"The healer can fix many practical issues, but it should not replace human review. After healing, check whether the final test is still doing exactly what you intended. If selectors, waits, assertions, or flow logic still need adjustment, update the spec manually and run it again.",[641,1384,1385],{},[648,1386,1387],{},"12. Repeat the same flow for additional user journeys.",[641,1389,1390],{},"This workflow works best when the requested plan is bounded and precise. Smaller, clearly defined flows are easier for the planner to map, easier for the generator to turn into useful specs, and easier for the healer to fix when something breaks. This also aligns with Playwright’s documented flow of planner to generator to healer producing test coverage sequentially.",[641,1392,945,1393],{},[678,1394,1397],{"href":1395,"rel":1396},"https:\u002F\u002Fplaywright.dev\u002Fdocs\u002Ftest-agents",[950],[648,1398,1395],{},[641,1400,1401],{},"Once the spec runs successfully, it is ready to be adapted for ZeroThreat by applying the proxy configuration described below.",[685,1403,1405],{"id":1404},"configuring-playwright-specs-to-run-in-zerothreat","Configuring Playwright Specs to Run in ZeroThreat",[641,1407,1408],{},"To allow ZeroThreat to execute your existing Playwright tests, you must configure them to route traffic through the ZeroThreat proxy and prepare the project so it runs reliably during scans.",[641,1410,1411,1412,1415,1416,1419],{},"Before importing your Playwright project into ZeroThreat, make sure your project is prepared correctly. At the top of your ",[779,1413,1414],{},"playwright.config.ts",", ensure that ",[779,1417,1418],{},"devices"," is imported. For example:",[769,1421,1422],{},[772,1423,1425],{"className":1158,"code":1424,"language":1160,"meta":777,"style":777},"import { defineConfig, devices } from '@playwright\u002Ftest'\n",[779,1426,1427],{"__ignoreMap":777},[782,1428,1429,1431,1434,1436],{"class":717,"line":784},[782,1430,1168],{"class":1167},[782,1432,1433],{"class":1171}," { defineConfig, devices } ",[782,1435,1175],{"class":1167},[782,1437,1438],{"class":791}," '@playwright\u002Ftest'\n",[641,1440,1441,1442,1445,1446,1449],{},"In your default Playwright configuration, keep the project running in ",[648,1443,1444],{},"headless mode",". If you already have ",[779,1447,1448],{},"headless: true"," set, keep it as it is. Otherwise, do not explicitly add or override this setting.",[641,1451,1452,1453,1456],{},"You should also structure your Playwright project so that each individual spec completes within ",[648,1454,1455],{},"30 seconds",". This is the timeout used for Playwright Spec execution inside ZeroThreat. You can have as many individual specs as needed, but each spec should stay within that limit to ensure the best coverage.",[641,1458,1459,1460,1462,1463,1466],{},"Inside your ",[779,1461,1414],{},", add the following project configuration under ",[779,1464,1465],{},"projects",":",[769,1468,1469],{},[772,1470,1472],{"className":1158,"code":1471,"language":1160,"meta":777,"style":777},"{\n    name: 'ZT-Proxy-Chromium',\n    use: {\n        ...devices['Desktop Chrome'],\n        proxy: {\n            server: 'http:\u002F\u002Flocalhost:8000',\n        },\n        ignoreHTTPSErrors: true,\n    },\n}\n",[779,1473,1474,1479,1493,1501,1515,1522,1534,1539,1552,1558],{"__ignoreMap":777},[782,1475,1476],{"class":717,"line":784},[782,1477,1478],{"class":1171},"{\n",[782,1480,1481,1484,1487,1490],{"class":717,"line":795},[782,1482,1483],{"class":787},"    name",[782,1485,1486],{"class":1171},": ",[782,1488,1489],{"class":791},"'ZT-Proxy-Chromium'",[782,1491,1492],{"class":1171},",\n",[782,1494,1495,1498],{"class":717,"line":827},[782,1496,1497],{"class":787},"    use",[782,1499,1500],{"class":1171},": {\n",[782,1502,1503,1506,1509,1512],{"class":717,"line":849},[782,1504,1505],{"class":1167},"        ...",[782,1507,1508],{"class":1171},"devices[",[782,1510,1511],{"class":791},"'Desktop Chrome'",[782,1513,1514],{"class":1171},"],\n",[782,1516,1517,1520],{"class":717,"line":879},[782,1518,1519],{"class":787},"        proxy",[782,1521,1500],{"class":1171},[782,1523,1524,1527,1529,1532],{"class":717,"line":906},[782,1525,1526],{"class":787},"            server",[782,1528,1486],{"class":1171},[782,1530,1531],{"class":791},"'http:\u002F\u002Flocalhost:8000'",[782,1533,1492],{"class":1171},[782,1535,1536],{"class":717,"line":923},[782,1537,1538],{"class":1171},"        },\n",[782,1540,1542,1545,1547,1550],{"class":717,"line":1541},8,[782,1543,1544],{"class":787},"        ignoreHTTPSErrors",[782,1546,1486],{"class":1171},[782,1548,1549],{"class":798},"true",[782,1551,1492],{"class":1171},[782,1553,1555],{"class":717,"line":1554},9,[782,1556,1557],{"class":1171},"    },\n",[782,1559,1561],{"class":717,"line":1560},10,[782,1562,1563],{"class":1171},"}\n",[641,1565,1566],{},"This ensures that Playwright traffic flows through the ZeroThreat scanning engine.",[641,1568,1459,1569,1572,1573,1466],{},[779,1570,1571],{},"package.json",", add the following script under ",[779,1574,1575],{},"scripts",[769,1577,1578],{},[772,1579,1583],{"className":1580,"code":1581,"language":1582,"meta":777,"style":777},"language-json shiki shiki-themes github-light github-dark","\"zt:test\": \"npx playwright test --project=ZT-Proxy-Chromium\"\n","json",[779,1584,1585],{"__ignoreMap":777},[782,1586,1587,1590,1592],{"class":717,"line":784},[782,1588,1589],{"class":791},"\"zt:test\"",[782,1591,1486],{"class":1171},[782,1593,1594],{"class":791},"\"npx playwright test --project=ZT-Proxy-Chromium\"\n",[653,1596,1597],{"icon":143,"icon-class":655,"style":656},[665,1598,1600],{"id":1599},"keep-your-playwright-specs-focused-and-modular-smaller-specs-are-easier-to-maintain-easier-to-debug-and-more-reliable-during-scans","Keep your Playwright Specs focused and modular. Smaller specs are easier to maintain, easier to debug, and more reliable during scans.",[641,1602,1603],{},"After these changes, your existing Playwright Specs will automatically execute within ZeroThreat without requiring any modifications to your test spec logic.",[685,1605,1607],{"id":1606},"upload-methods","Upload Methods",[1609,1610,1612],"h4",{"id":1611},"method-1-import-from-github","Method 1: Import from GitHub",[641,1614,1615],{},"Use this method to connect your existing Playwright GitHub repository directly to ZeroThreat using the ZeroThreat GitHub App.",[641,1617,1618],{},"Follow these steps:",[762,1620,1621],{},[765,1622,1623,1624,1629,1630,1094],{},"Click the ",[742,1625,1626],{},[648,1627,1628],{},"Connect Your GitHub Repository"," card. In the popup, click ",[742,1631,1632],{},[648,1633,1634],{},"Connect GitHub",[731,1636],{"source":1637},"\u002FImages\u002Fimage (468).png",[653,1639,1640],{"icon":143,"icon-class":655,"style":656},[665,1641,1643],{"id":1642},"make-sure-you-are-logged-in-to-github-in-the-same-browser-profile-if-not-you-can-log-in-during-the-next-step","Make sure you are logged in to GitHub in the same browser profile. If not, you can log in during the next step.",[762,1645,1646],{"start":795},[765,1647,1648],{},"You will be redirected to the GitHub App access page.",[731,1650],{"source":1651},"\u002FImages\u002Fimage (469).png",[762,1653,1654],{"start":827},[765,1655,1656,1657,1662],{},"Select the repository that contains your Playwright Specs and grant access to the ZeroThreat AI GitHub App. Click ",[742,1658,1659],{},[648,1660,1661],{},"Save"," to complete the GitHub App authorization.",[731,1664],{"source":1665},"\u002FImages\u002Fimage (470).png",[762,1667,1668],{"start":849},[765,1669,1670,1671,1676],{},"After the connection is successful, you will see a ",[742,1672,1673],{},[648,1674,1675],{},"GitHub App Installed"," confirmation page.",[731,1678],{"source":1679},"\u002FImages\u002Fimage (471).png",[762,1681,1682],{"start":879},[765,1683,1684],{},"Back in ZeroThreat Portal, select:",[1686,1687,1688,1696,1704],"ul",{},[765,1689,1690,1691],{},"your ",[742,1692,1693],{},[648,1694,1695],{},"repository",[765,1697,1698,1703],{},[742,1699,1700],{},[648,1701,1702],{},"the path"," to your Playwright Specs in the repository",[765,1705,1706,1707],{},"optionally, the ",[742,1708,1709],{},[648,1710,1711],{},"branch name",[731,1713],{"source":1714},"\u002FImages\u002Fimage (472).png",[762,1716,1717],{"start":906},[765,1718,1719,1720,1094],{},"Click ",[742,1721,1722],{},[648,1723,1661],{},[731,1725],{"source":1726},"\u002FImages\u002Fimage (473).png",[641,1728,1729],{},"Once connected, your Playwright Specs will be used to improve coverage in future scans.",[1609,1731,1733],{"id":1732},"method-2-upload-a-zip-file","Method 2: Upload a ZIP File",[641,1735,1736],{},"You can also upload your Playwright project directly.",[762,1738,1739,1746,1752],{},[765,1740,1741,1742,1745],{},"Create a ",[779,1743,1744],{},".zip"," file of the project containing playwright specs",[765,1747,1748,1749,1751],{},"Ensure that ",[779,1750,1414],{}," is present in the root directory of the ZIP",[765,1753,1754],{},"Upload the ZIP file",[731,1756],{"source":1757},"\u002FImages\u002Fimage (474).png",[653,1759,1763],{"icon":1760,"icon-class":1761,"style":1762},"triangle-exclamation","text-[#f97316]","background-color:#fff4e6; color:#f97316; border:1px solid #f6d2b0;",[665,1764,1766,1767,1770],{"id":1765},"if-your-zip-file-is-larger-than-50-mb-use-the-import-from-github-option-instead","If your ZIP file is larger than ",[648,1768,1769],{},"50 MB",", use the Import from GitHub option instead.",[641,1772,1773],{},"Once uploaded, your Playwright Specs will be listed in the Playwright Specs section for that target.",[685,1775,1777],{"id":1776},"viewing-playwright-specs-during-a-scan","Viewing Playwright Specs During a Scan",[641,1779,1780],{},"Once Playwright Specs are configured for a target, they will automatically run when you initiate a scan.",[1609,1782,1784],{"id":1783},"in-scan-report",[648,1785,1786],{},"In Scan Report",[641,1788,1789],{},"After the scan completes:",[1686,1791,1792,1795],{},[765,1793,1794],{},"Open the Scan Report",[765,1796,1797,1798,1801],{},"In the top-right dashboard, you will see a ",[648,1799,1800],{},"Playwright"," section",[731,1803],{"source":1804},"\u002FImages\u002Fimage (475).png",[1686,1806,1807],{},[765,1808,1809,1810],{},"Clicking it will display:",[1686,1811,1812,1815,1818],{},[765,1813,1814],{},"All specs executed during the scan",[765,1816,1817],{},"Execution status (Pass \u002F Fail)",[765,1819,1820],{},"Execution time per spec",[731,1822],{"source":1823},"\u002FImages\u002Fimage (476).png",[1609,1825,1827],{"id":1826},"during-an-active-scan",[648,1828,1829],{},"During an Active Scan",[641,1831,1832,1833,1836],{},"While a scan is running, you can monitor Playwright spec execution progress within the ",[648,1834,1835],{},"AI-Driven Penetration"," view.",[641,1838,1839,1840,1843],{},"A dedicated ",[648,1841,1842],{},"Playwright Spec block"," will display:",[1686,1845,1846,1849,1852],{},[765,1847,1848],{},"Currently running specs",[765,1850,1851],{},"Execution status",[765,1853,1854],{},"Runtime information",[731,1856],{"source":1857},"\u002FImages\u002Fimage (477).png",[641,1859,1860],{},"This allows you to verify that critical workflows using Playwright specs are being tested as expected.",[685,1862,1864],{"id":1863},"why-use-playwright-specs","Why Use Playwright Specs?",[641,1866,1867],{},"Integrating Playwright Specs provides:",[1686,1869,1870,1873,1876],{},[765,1871,1872],{},"Coverage for multi-step and stateful workflows",[765,1874,1875],{},"Testing of conditionally accessible features",[765,1877,1878],{},"Improved attack surface exploration beyond ZeroThreat static crawling",[641,1880,1881],{},"By combining crawler-based discovery with business-aware execution flows, ZeroThreat ensures more realistic and comprehensive security testing.",[685,1883,1884],{"id":753},"Summary",[641,1886,1887],{},"Playwright Specs enable you to bring real business workflows into your security scans. By reusing existing automation suites, you can significantly improve coverage of critical application features that traditional crawlers cannot reliably test.",[641,1889,1890],{},"Once configured, Playwright execution becomes a seamless part of your scanning process, providing visibility, control, and deeper testing across your application’s most important flows.",[1892,1893,1894],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":777,"searchDepth":795,"depth":795,"links":1896},[1897,1898,1900,1901,1902,1903,1904],{"id":687,"depth":795,"text":688},{"id":739,"depth":795,"text":1899},"Two Quick Ways to Create Playwright Specs (Optional)",{"id":1404,"depth":795,"text":1405},{"id":1606,"depth":795,"text":1607},{"id":1776,"depth":795,"text":1777},{"id":1863,"depth":795,"text":1864},{"id":753,"depth":795,"text":1884},"Modern web applications are built around complex, state-driven business workflows that cannot be accurately tested through simple crawling alone. Critical flows such as multi-step checkout processes, HR onboarding journeys, approval chains, support ticket escalations, and role-based feature access require precise sequencing, authenticated states, and conditional logic.","md",{"imageSrc":365},{"title":361,"description":1905},"Y78csvvirPz4kGit5ZX3sQEtGCjw7LXz7r_UYSvNKG8",[1911,1912],{"title":349,"path":351,"stem":357,"children":-1},{"title":372,"path":373,"stem":374,"children":-1},{"data":1914,"body":1915},{},{"type":1916,"children":1917},"root",[1918],{"type":1919,"tag":641,"props":1920,"children":1921},"element",{},[1922],{"type":1275,"value":1905},1779455390336]