1"use strict";(self.webpackChunkshaft_user_guide=self.webpackChunkshaft_user_guide||[]).push([["25435"],{81592(e,n,t){t.r(n),t.d(n,{metadata:()=>i,default:()=>h,frontMatter:()=>l,contentTitle:()=>a,toc:()=>c,assets:()=>o});var i=JSON.parse('{"id":"agentic/overview","title":"Agentic testing","description":"Understand how the IntelliJ plugin, MCP, Pilot, Capture, Doctor, and Heal fit together.","source":"@site/docs/agentic/overview.mdx","sourceDirName":"agentic","slug":"/agentic/overview","permalink":"/docs/agentic/overview","draft":false,"unlisted":false,"editUrl":"https://github.com/ShaftHQ/shafthq.github.io/blob/master/docs/agentic/overview.mdx","tags":[{"inline":true,"label":"mcp","permalink":"/docs/tags/mcp"},{"inline":true,"label":"pilot","permalink":"/docs/tags/pilot"},{"inline":true,"label":"capture","permalink":"/docs/tags/capture"},{"inline":true,"label":"doctor","permalink":"/docs/tags/doctor"},{"inline":true,"label":"heal","permalink":"/docs/tags/heal"}],"version":"current","lastUpdatedAt":1790975565000,"frontMatter":{"id":"overview","title":"Agentic testing","description":"Understand how the IntelliJ plugin, MCP, Pilot, Capture, Doctor, and Heal fit together.","slug":"/agentic/overview","tags":["mcp","pilot","capture","doctor","heal"]}}'),r=t(74848),s=t(28453);let l={id:"overview",title:"Agentic testing",description:"Understand how the IntelliJ plugin, MCP, Pilot, Capture, Doctor, and Heal fit together.",slug:"/agentic/overview",tags:["mcp","pilot","capture","doctor","heal"]},a="Agentic testing without hidden automation",o={},c=[{value:"Install SHAFT agent tools",id:"install-shaft-agent-tools",level:2},{value:"Why SHAFT?",id:"why-shaft",level:2},{value:"Related",id:"related",level:2}];function d(e){let n={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",mermaid:"mermaid",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"agentic-testing-without-hidden-automation",children:"Agentic testing without hidden automation"})}),"\n",(0,r.jsx)(n.p,{children:"SHAFT separates deterministic automation from optional model-provider advice.\nMCP, Capture, Doctor, and Heal remain useful without provider credentials."}),"\n",(0,r.jsx)(n.mermaid,{value:'flowchart TD\n IntelliJ["IntelliJ plugin"] --\x3e MCP["SHAFT MCP"]\n Client["AI client"] --\x3e MCP["SHAFT MCP"]\n MCP --\x3e Engine["shaft-engine tools"]\n MCP --\x3e Capture["Capture"]\n Capture --\x3e Generated["Reviewable TestNG source"]\n Results["Allure results"] --\x3e Doctor["Doctor"]\n Doctor --\x3e Diagnosis["Portable diagnosis"]\n FailedLocator["Failed locator"] --\x3e Heal["Deterministic Heal"]\n Heal --\x3e Report["Explainable recovery report"]\n Provider["Optional provider"] -. consent + redaction .-> Doctor\n Provider -. consent + redaction .-> Heal'}),"\n",(0,r.jsx)(n.h2,{id:"install-shaft-agent-tools",children:"Install SHAFT agent tools"}),"\n",(0,r.jsxs)(n.p,{children:["Install the project-local ",(0,r.jsx)(n.a,{href:"/docs/agentic/chaos-engine",children:"ChaosEngine harness"})," when\nyou want one canonical agent workflow plus verified host adapters and local\nMemory, MemPalace, and Graphify tooling."]}),"\n",(0,r.jsxs)(n.p,{children:["Install the first-party skill pack without configuring an MCP client. The\n",(0,r.jsx)(n.a,{href:"/docs/agentic/skills",children:"SHAFT agent skills guide"})," owns the commands, supported\nroutes, native directories, upgrade behavior, and packaging tradeoffs."]}),"\n",(0,r.jsxs)(n.p,{children:["Install ",(0,r.jsx)(n.code,{children:"shaft-cli"})," without configuring an MCP client. This also installs its\ninternal ",(0,r.jsx)(n.code,{children:"shaft-mcp"})," runtime prerequisite."]}),"\n",(0,r.jsx)(n.p,{children:"Change into the target project first. Public one-liners install SHAFT Agentic\nTools (MCP, CLI, and skills):"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:'irm "https://raw.githubusercontent.com/ShaftHQ/SHAFT_ENGINE/main/scripts/mcp/install.ps1" | iex\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl -fsSL "https://raw.githubusercontent.com/ShaftHQ/SHAFT_ENGINE/main/scripts/mcp/install.sh" | bash\n'})}),"\n",(0,r.jsx)(n.p,{children:"CLI-only install still uses the inner Agentic Tools script:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-powershell",children:"powershell -NoProfile -ExecutionPolicy Bypass -Command \"irm https://raw.githubusercontent.com/ShaftHQ/SHAFT_ENGINE/main/scripts/mcp/install-shaft-agentic-tools.ps1 | iex; Install-ShaftMcp -Arguments @('--install-shaft-cli')\"\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"curl -fsSL https://raw.githubusercontent.com/ShaftHQ/SHAFT_ENGINE/main/scripts/mcp/install-shaft-agentic-tools.sh | sh -s -- --install-shaft-cli\n"})}),"\n",(0,r.jsx)(n.div,{className:"table-scroll",role:"region",tabIndex:"0","aria-label":"Install SHAFT agent tools",children:(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Capability"}),(0,r.jsx)(n.th,{children:"Default behavior"}),(0,r.jsx)(n.th,{children:"Start here"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"IntelliJ plugin"}),(0,r.jsx)(n.td,{children:"IDE front door for Assistant, Coding Partner, Recorder, Doctor, Healer, Inspector, Projects, and Guide search"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/intellij",children:"IntelliJ IDEA plugin"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"MCP"}),(0,r.jsx)(n.td,{children:"Local stdio tools; no model credentials stored"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/mcp",children:"Connect MCP"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Planning"}),(0,r.jsxs)(n.td,{children:["Deterministic same-origin crawl drafts Markdown test plans into ",(0,r.jsx)(n.code,{children:"specs/"}),"; no AI calls"]}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/mcp#planning-test-coverage",children:"Planning test coverage"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Capture"}),(0,r.jsx)(n.td,{children:"Record and generate deterministic test c
1ode"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/capture",children:"Capture"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Doctor"}),(0,r.jsx)(n.td,{children:"Analyze allowlisted evidence offline"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/doctor",children:"Doctor"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Heal"}),(0,r.jsx)(n.td,{children:"Recover eligible web locators with an explainable policy"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/heal",children:"Heal"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Pilot providers"}),(0,r.jsx)(n.td,{children:"Disabled until explicitly configured and approved"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/providers",children:"Provider controls"})})]})]})]})}),"\n",(0,r.jsx)(n.h2,{id:"why-shaft",children:"Why SHAFT?"}),"\n",(0,r.jsx)(n.p,{children:"Compared with plain recorder/codegen tools and raw agent-written Selenium,\nSHAFT's agentic loop differs on four load-bearing points:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Privacy-safe recording."})," Typed values are externalized to test-data\nfiles, secrets are redacted at capture time, and a checked-in team policy\n(",(0,r.jsx)(n.code,{children:".shaft/recorder-policy.json"}),") pins recording behavior for the whole\nrepository \u2014 recordings are safe to commit and share."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Compile-validated codegen."})," Generated tests are compiled against SHAFT\nand optionally replayed end-to-end before you ever see them; a replay\nfailure returns the code ",(0,r.jsx)(n.em,{children:"plus"})," the failing step's diagnostics, never a\nsilent broken file."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Repo-aware generation."})," The Coding Partner plans against your existing\npage objects, locator fields, and action methods before proposing new code,\nso generation extends your suite instead of forking it."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"A maintenance loop, not just a generator."})," Doctor triages failed runs\nfrom Allure evidence and Heal recovers eligible locators with an\nexplainable policy \u2014 the same tools that created the test keep it alive."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The same workflows run on every agent \u2014 Codex, Claude Code, GitHub Copilot,\nand Gemini \u2014 because they are MCP tools, not agent-specific plugins; and the\nNo-AI lane (Recorder, codegen, Doctor, Healer) works with no agent or model\ncredentials at all."}),"\n",(0,r.jsxs)(n.p,{children:["Use the ",(0,r.jsx)(n.a,{href:"/docs/agentic/mcp#mcp-command-reference",children:"MCP command reference"})," for\nCapture and Doctor CLI examples."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"MCP commands live on /docs/agentic/mcp#mcp-command-reference\n"})}),"\n",(0,r.jsx)(n.h2,{id:"related",children:"Related"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/docs/features/whats-new/agentic",children:"What's new: agentic tools"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/chaos-engine",children:"ChaosEngine"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/skills",children:"SHAFT agent skills"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/mcp",children:"MCP"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/pilot",children:"Pilot"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/doctor",children:"Doctor"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/docs/agentic/providers",children:"Providers"})}),"\n"]})]})}function h(e={}){let{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},28453(e,n,t){t.d(n,{R:()=>l,x:()=>a});var i=t(96540);let r={},s=i.createContext(r);function l(e){let n=i.useContext(s);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.