[{"data":1,"prerenderedAt":1976},["ShallowReactive",2],{"navigation_docs":3,"-guide-collection-runner":172,"-guide-collection-runner-surround":1971},[4,30,100,134],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":29},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,21,25],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":5,"path":19,"stem":20},"\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":22,"path":23,"stem":24},"Build from source","\u002Fgetting-started\u002Fbuild-from-source","1.getting-started\u002F4.build-from-source",{"title":26,"path":27,"stem":28},"Troubleshooting","\u002Fgetting-started\u002Ftroubleshooting","1.getting-started\u002F5.troubleshooting",false,{"title":31,"icon":32,"path":33,"stem":34,"children":35,"page":29},"Guide","i-lucide-book-open","\u002Fguide","2.guide",[36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96],{"title":37,"path":38,"stem":39},"Interface","\u002Fguide\u002Finterface","2.guide\u002F01.interface",{"title":41,"path":42,"stem":43},"Workspace","\u002Fguide\u002Fworkspace","2.guide\u002F02.workspace",{"title":45,"path":46,"stem":47},"Collections","\u002Fguide\u002Fcollections","2.guide\u002F03.collections",{"title":49,"path":50,"stem":51},"HTTP requests","\u002Fguide\u002Fhttp-requests","2.guide\u002F04.http-requests",{"title":53,"path":54,"stem":55},"Variables","\u002Fguide\u002Fvariables","2.guide\u002F05.variables",{"title":57,"path":58,"stem":59},"Authorization","\u002Fguide\u002Fauthorization","2.guide\u002F06.authorization",{"title":61,"path":62,"stem":63},"Scripts and tests","\u002Fguide\u002Fscripts-and-tests","2.guide\u002F07.scripts-and-tests",{"title":65,"path":66,"stem":67},"Collection runner","\u002Fguide\u002Fcollection-runner","2.guide\u002F08.collection-runner",{"title":69,"path":70,"stem":71},"Import and export","\u002Fguide\u002Fimport-export","2.guide\u002F09.import-export",{"title":73,"path":74,"stem":75},"Code snippets","\u002Fguide\u002Fcode-snippets","2.guide\u002F10.code-snippets",{"title":77,"path":78,"stem":79},"gRPC","\u002Fguide\u002Fgrpc","2.guide\u002F11.grpc",{"title":81,"path":82,"stem":83},"WebSocket","\u002Fguide\u002Fwebsocket","2.guide\u002F12.websocket",{"title":85,"path":86,"stem":87},"Cookies, proxy and certificates","\u002Fguide\u002Fcookies-proxy-certificates","2.guide\u002F13.cookies-proxy-certificates",{"title":89,"path":90,"stem":91},"Settings","\u002Fguide\u002Fsettings","2.guide\u002F14.settings",{"title":93,"path":94,"stem":95},"Keyboard shortcuts","\u002Fguide\u002Fkeyboard-shortcuts","2.guide\u002F15.keyboard-shortcuts",{"title":97,"path":98,"stem":99},"Privacy and security","\u002Fguide\u002Fprivacy-and-security","2.guide\u002F16.privacy-and-security",{"title":101,"icon":102,"path":103,"stem":104,"children":105,"page":29},"Reference","i-lucide-square-terminal","\u002Freference","3.reference",[106,110,114,118,122,126,130],{"title":107,"path":108,"stem":109},"Command line","\u002Freference\u002Fcli","3.reference\u002F1.cli",{"title":111,"path":112,"stem":113},"Automation tools","\u002Freference\u002Fautomation-tools","3.reference\u002F2.automation-tools",{"title":115,"path":116,"stem":117},"Scripting API","\u002Freference\u002Fscripting-api","3.reference\u002F3.scripting-api",{"title":119,"path":120,"stem":121},"Dynamic variables","\u002Freference\u002Fdynamic-variables","3.reference\u002F4.dynamic-variables",{"title":123,"path":124,"stem":125},"UI control channel","\u002Freference\u002Fui-control-channel","3.reference\u002F5.ui-control-channel",{"title":127,"path":128,"stem":129},"Workspace format","\u002Freference\u002Fworkspace-format","3.reference\u002F6.workspace-format",{"title":131,"path":132,"stem":133},"Feature status","\u002Freference\u002Ffeature-status","3.reference\u002F7.feature-status",{"title":135,"icon":136,"path":137,"stem":138,"children":139,"page":29},"Contributing","i-lucide-git-pull-request","\u002Fcontributing","4.contributing",[140,144,148,152,156,160,164,168],{"title":141,"path":142,"stem":143},"Contributing overview","\u002Fcontributing\u002Foverview","4.contributing\u002F1.overview",{"title":145,"path":146,"stem":147},"Development","\u002Fcontributing\u002Fdevelopment","4.contributing\u002F2.development",{"title":149,"path":150,"stem":151},"Architecture","\u002Fcontributing\u002Farchitecture","4.contributing\u002F3.architecture",{"title":153,"path":154,"stem":155},"Known gaps","\u002Fcontributing\u002Fgaps","4.contributing\u002F4.gaps",{"title":157,"path":158,"stem":159},"Adding a feature","\u002Fcontributing\u002Fadding-a-feature","4.contributing\u002F5.adding-a-feature",{"title":161,"path":162,"stem":163},"Assets and clean-room","\u002Fcontributing\u002Fassets-and-clean-room","4.contributing\u002F6.assets-and-clean-room",{"title":165,"path":166,"stem":167},"Releasing","\u002Fcontributing\u002Freleasing","4.contributing\u002F7.releasing",{"title":169,"path":170,"stem":171},"Writing the documentation","\u002Fcontributing\u002Fdocumentation","4.contributing\u002F8.documentation",{"id":173,"title":65,"body":174,"description":1965,"extension":1966,"links":1967,"meta":1968,"navigation":1626,"path":66,"seo":1969,"stem":67,"__hash__":1970},"docs\u002F2.guide\u002F08.collection-runner.md",{"type":175,"value":176,"toc":1952},"minimark",[177,181,189,194,262,266,358,367,372,462,465,469,472,484,491,516,610,639,738,745,749,794,800,819,832,836,846,857,861,870,1056,1059,1065,1135,1144,1181,1188,1191,1198,1304,1456,1489,1551,1557,1561,1564,1584,1901,1924,1948],[178,179,180],"p",{},"The runner sends the HTTP requests of a collection (or one folder) one after another. Each request runs with its scripts and its Tests tab, so a run doubles as a regression check.",[178,182,183,184,188],{},"The Runner tab and ",[185,186,187],"code",{},"postguy-cli run --collection"," use the same engine.",[190,191,193],"h2",{"id":192},"open-the-runner","Open the runner",[195,196,197,210],"table",{},[198,199,200],"thead",{},[201,202,203,207],"tr",{},[204,205,206],"th",{},"From",[204,208,209],{},"How",[211,212,213,229,250],"tbody",{},[201,214,215,219],{},[216,217,218],"td",{},"Collection or folder",[216,220,221,222,225,226,228],{},"Click ",[185,223,224],{},"Run"," in its detail tab, or ",[185,227,224],{}," in its right-click menu in the sidebar. The runner opens with that collection (and folder) selected.",[201,230,231,234],{},[216,232,233],{},"Command",[216,235,236,239,240,243,244,249],{},[185,237,238],{},"Open collection runner"," (",[185,241,242],{},"runner.open",") in the ",[245,246,248],"a",{"href":247},"\u002Fguide\u002Fkeyboard-shortcuts#command-palette","command palette",". It has no keyboard shortcut.",[201,251,252,255],{},[216,253,254],{},"Past run",[216,256,257,258,261],{},"The ",[185,259,260],{},"Runs"," tab of a collection lists its stored runs. Click one to open it in the Runner tab.",[190,263,265],{"id":264},"runner-options","Runner options",[195,267,268,278],{},[198,269,270],{},[201,271,272,275],{},[204,273,274],{},"Option",[204,276,277],{},"Behaviour",[211,279,280,288,299,319,327,335,350],{},[201,281,282,285],{},[216,283,284],{},"Collection",[216,286,287],{},"The collection to run.",[201,289,290,293],{},[216,291,292],{},"Environment",[216,294,295,298],{},[185,296,297],{},"No environment",", or one of the workspace environments. If you choose none in the runner, the engine uses the workspace's active environment (the CLI does the same).",[201,300,301,304],{},[216,302,303],{},"Requests",[216,305,306,307,310,311,314,315,318],{},"One tick per request, in tree order, with ",[185,308,309],{},"Select all"," \u002F ",[185,312,313],{},"Deselect all",". gRPC and WebSocket requests are listed but disabled with ",[185,316,317],{},"(gRPC\u002FWebSocket: skipped)",". If you untick requests, only the ticked ones run, in tree order.",[201,320,321,324],{},[216,322,323],{},"Iterations",[216,325,326],{},"A whole number from 1 to 10,000.",[201,328,329,332],{},[216,330,331],{},"Delay",[216,333,334],{},"Pause between requests, 0 to 600,000 ms (10 minutes).",[201,336,337,340],{},[216,338,339],{},"Data file",[216,341,342,345,346,349],{},[185,343,344],{},"Choose…"," a CSV or JSON file. The tab previews the first 5 rows and first 8 columns, and shows the error text if the file is refused. ",[185,347,348],{},"Clear"," removes it.",[201,351,352,355],{},[216,353,354],{},"Stop on error",[216,356,357],{},"Stops the whole run after the first request error, script failure or failed test.",[178,359,360,362,363,366],{},[185,361,224],{}," becomes ",[185,364,365],{},"Cancel"," while a run is in progress. Results stream in per request, grouped by iteration, with a progress bar.",[368,369,371],"h3",{"id":370},"results","Results",[373,374,375,395,411,428,451],"ul",{},[376,377,378,379,382,383,386,387,390,391,394],"li",{},"A summary row shows ",[185,380,381],{},"passed",", ",[185,384,385],{},"failed"," and ",[185,388,389],{},"skipped"," counts, the duration, and a ",[185,392,393],{},"stopped"," badge with the reason when the run ended early.",[376,396,397,398,382,401,382,404,386,407,410],{},"The filters ",[185,399,400],{},"All",[185,402,403],{},"Passed",[185,405,406],{},"Failed",[185,408,409],{},"Skipped"," narrow the list.",[376,412,413,414,382,417,382,420,423,424,427],{},"Each request row shows a ",[185,415,416],{},"PASS",[185,418,419],{},"FAIL",[185,421,422],{},"ERROR"," or ",[185,425,426],{},"SKIP"," badge.",[376,429,430,431],{},"Select a row to see its details:\n",[373,432,433,436,439,442,448],{},[376,434,435],{},"URL and error.",[376,437,438],{},"Script failures (phase, origin, line).",[376,440,441],{},"Tests with assertion badges.",[376,443,444,447],{},[185,445,446],{},"pg.report"," fields.",[376,449,450],{},"For a failed request, an excerpt of the response body (first 1,024 characters).",[376,452,257,453,456,457,461],{},[185,454,455],{},"Download report"," row writes the run in any of the ",[245,458,460],{"href":459},"#report-formats","report formats",".",[178,463,464],{},"A run reads one snapshot of the collection and writes no history entries. When a script changes variables, the runner reloads the collection so later requests see them.",[190,466,468],{"id":467},"iterations-and-data-files","Iterations and data files",[178,470,471],{},"An iteration runs the whole request plan once. Postguy picks the iteration count in this order:",[473,474,475,478,481],"ol",{},[376,476,477],{},"An explicit count, if you set one.",[376,479,480],{},"Otherwise one iteration per data row.",[376,482,483],{},"Otherwise 1.",[178,485,486,487,490],{},"In the Runner tab, a count of 1 with a data file loaded means \"one iteration per row\". Set a count above 1 to override it. The CLI passes ",[185,488,489],{},"--iterations"," through as given.",[178,492,493,494,497,498,500,501,504,505,507,508,511,512,515],{},"Row ",[185,495,496],{},"n"," is used for iteration ",[185,499,496],{},". Its columns become variables in the ",[185,502,503],{},"Data"," scope. That scope sits above the environment and below runtime and local values (see ",[245,506,53],{"href":54},"). Scripts read them with ",[185,509,510],{},"pm.iterationData"," (see the ",[245,513,514],{"href":116},"scripting API","). If an iteration has no row (more iterations than rows), the data variable stays unresolved.",[195,517,518,528],{},[198,519,520],{},[201,521,522,525],{},[204,523,524],{},"Rule",[204,526,527],{},"Value",[211,529,530,538,554,562,570,578,586,594,602],{},[201,531,532,535],{},[216,533,534],{},"Formats",[216,536,537],{},"CSV with a header row, or JSON as an array of objects.",[201,539,540,543],{},[216,541,542],{},"Format detection",[216,544,545,546,549,550,553],{},"A ",[185,547,548],{},".json"," file name, or content whose first non-blank character is ",[185,551,552],{},"[",", is JSON. Anything else is CSV.",[201,555,556,559],{},[216,557,558],{},"Encoding",[216,560,561],{},"A leading UTF-8 byte-order mark is removed.",[201,563,564,567],{},[216,565,566],{},"Maximum file size",[216,568,569],{},"10 MiB",[201,571,572,575],{},[216,573,574],{},"Maximum rows",[216,576,577],{},"100,000",[201,579,580,583],{},[216,581,582],{},"Maximum columns",[216,584,585],{},"1,000 (per row for JSON)",[201,587,588,591],{},[216,589,590],{},"CSV values",[216,592,593],{},"Always strings.",[201,595,596,599],{},[216,597,598],{},"JSON values",[216,600,601],{},"Keep their JSON types.",[201,603,604,607],{},[216,605,606],{},"Errors",[216,608,609],{},"Name the row (1-based for JSON; the CSV parser's record position for CSV). A ragged CSV row is an error.",[611,612,617],"pre",{"className":613,"code":614,"language":615,"meta":616,"style":616},"language-csv shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","username,expected_status\nalice,200\nbob,403\n","csv","",[185,618,619,627,633],{"__ignoreMap":616},[620,621,624],"span",{"class":622,"line":623},"line",1,[620,625,626],{},"username,expected_status\n",[620,628,630],{"class":622,"line":629},2,[620,631,632],{},"alice,200\n",[620,634,636],{"class":622,"line":635},3,[620,637,638],{},"bob,403\n",[611,640,644],{"className":641,"code":642,"language":643,"meta":616,"style":616},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[\n  { \"username\": \"alice\", \"expected_status\": 200 },\n  { \"username\": \"bob\", \"expected_status\": 403 }\n]\n","json",[185,645,646,652,697,732],{"__ignoreMap":616},[620,647,648],{"class":622,"line":623},[620,649,651],{"class":650},"sMK4o","[\n",[620,653,654,657,660,664,667,670,672,676,678,681,683,686,688,690,694],{"class":622,"line":629},[620,655,656],{"class":650},"  {",[620,658,659],{"class":650}," \"",[620,661,663],{"class":662},"spNyl","username",[620,665,666],{"class":650},"\"",[620,668,669],{"class":650},":",[620,671,659],{"class":650},[620,673,675],{"class":674},"sfazB","alice",[620,677,666],{"class":650},[620,679,680],{"class":650},",",[620,682,659],{"class":650},[620,684,685],{"class":662},"expected_status",[620,687,666],{"class":650},[620,689,669],{"class":650},[620,691,693],{"class":692},"sbssI"," 200",[620,695,696],{"class":650}," },\n",[620,698,699,701,703,705,707,709,711,714,716,718,720,722,724,726,729],{"class":622,"line":635},[620,700,656],{"class":650},[620,702,659],{"class":650},[620,704,663],{"class":662},[620,706,666],{"class":650},[620,708,669],{"class":650},[620,710,659],{"class":650},[620,712,713],{"class":674},"bob",[620,715,666],{"class":650},[620,717,680],{"class":650},[620,719,659],{"class":650},[620,721,685],{"class":662},[620,723,666],{"class":650},[620,725,669],{"class":650},[620,727,728],{"class":692}," 403",[620,730,731],{"class":650}," }\n",[620,733,735],{"class":622,"line":734},4,[620,736,737],{"class":650},"]\n",[178,739,740,741,744],{},"Use ",[185,742,743],{},"{{username}}"," in a URL, header or body to read the column.",[190,746,748],{"id":747},"sequencing-from-scripts","Sequencing from scripts",[195,750,751,761],{},[198,752,753],{},[201,754,755,758],{},[204,756,757],{},"Script call",[204,759,760],{},"Effect in the runner",[211,762,763,773,784],{},[201,764,765,770],{},[216,766,767],{},[185,768,769],{},"setNextRequest(\"Name\")",[216,771,772],{},"Jumps to the request with that name. If no name matches, the request id is tried. If nothing matches, the iteration ends with a warning.",[201,774,775,781],{},[216,776,777,780],{},[185,778,779],{},"skipRequest()"," (pre-request)",[216,782,783],{},"The request is skipped.",[201,785,786,791],{},[216,787,788],{},[185,789,790],{},"pg.stopExecution()",[216,792,793],{},"Ends the current iteration. The next iteration, if any, starts normally.",[178,795,545,796,799],{},[185,797,798],{},"setNextRequest"," loop is cut off after 10,000 requests in one iteration, with a warning.",[178,801,802,803,805,806,808,809,382,812,382,815,818],{},"See ",[245,804,61],{"href":62}," for the phases and ",[245,807,115],{"href":116}," for the full list of globals (",[185,810,811],{},"pm",[185,813,814],{},"pg",[185,816,817],{},"bru",").",[820,821,822,829],"note",{},[178,823,824,825,828],{},"gRPC and WebSocket requests are part of the plan but the runner never sends them. They show as skipped with the reason ",[185,826,827],{},"only HTTP requests run in the collection runner",". A skipped request does not fail the run.",[178,830,831],{},"The runner is sequential. Parallel runs and collection-level run history beyond the stored runs below are not available.",[190,833,835],{"id":834},"stored-runs","Stored runs",[178,837,838,839,842,843,461],{},"Every finished run is saved as ",[185,840,841],{},".postguy\u002Fruns\u002F\u003Ccollection-id>\u002F\u003Crun-id>.json"," in the ",[245,844,845],{"href":42},"workspace",[373,847,848,851,854],{},[376,849,850],{},"Only the newest 20 runs per collection are kept. Older files are deleted when a new run is saved.",[376,852,853],{},"You cannot delete a single run from the UI yet.",[376,855,856],{},"A run file larger than 32 MiB is not read back.",[190,858,860],{"id":859},"report-formats","Report formats",[178,862,257,863,865,866,869],{},[185,864,455],{}," row offers all of these formats, and ",[185,867,868],{},"postguy-cli run --reporters"," writes them. Date and time use the local time zone.",[195,871,872,885],{},[198,873,874],{},[201,875,876,879,882],{},[204,877,878],{},"Format",[204,880,881],{},"File",[204,883,884],{},"Contents",[211,886,887,914,931,970,987,1017,1041],{},[201,888,889,894,897],{},[216,890,891],{},[185,892,893],{},"cli",[216,895,896],{},"stdout (CLI only)",[216,898,899,900,382,903,386,906,909,910,913],{},"Newman-like text: per-iteration request lines with ",[185,901,902],{},"✓",[185,904,905],{},"✗",[185,907,908],{},"○"," marks, warnings, a summary table (iterations, requests, test-scripts, assertions; executed and failed), the total duration, and a ",[185,911,912],{},"stopped:"," line when the run ended early.",[201,915,916,920,924],{},[216,917,918],{},[185,919,643],{},[216,921,922],{},[185,923,548],{},[216,925,926,927,930],{},"The full run result: iterations, requests, tests, failures. Same shape as the ",[185,928,929],{},"run_get"," tool.",[201,932,933,938,943],{},[216,934,935],{},[185,936,937],{},"junit",[216,939,940],{},[185,941,942],{},".xml",[216,944,945,946,949,950,953,954,957,958,961,962,965,966,969],{},"One ",[185,947,948],{},"testsuite"," per request run (named ",[185,951,952],{},"\u003Citeration>\u002F\u003Cfolder path>\u002F\u003Crequest>","), one ",[185,955,956],{},"testcase"," per test. A request error or a skip adds a ",[185,959,960],{},"request"," test case. Each script failure adds a ",[185,963,964],{},"\u003Cphase> script"," case. The top-level ",[185,967,968],{},"failures"," counts failed tests plus script failures.",[201,971,972,977,982],{},[216,973,974],{},[185,975,976],{},"html",[216,978,979],{},[185,980,981],{},".html",[216,983,984,985,447],{},"One self-contained file: inline style, no script, no external URL, every string escaped. Includes the totals, each request with its tests, and ",[185,986,446],{},[201,988,989,993,998],{},[216,990,991],{},[185,992,615],{},[216,994,995],{},[185,996,997],{},".csv",[216,999,1000,1001,382,1004,382,1007,382,1010,1013,1014,461],{},"The requests table only. UTF-8 with a byte-order mark, CRLF line ends, quoting per RFC 4180, and a guard that prefixes cells starting with ",[185,1002,1003],{},"=",[185,1005,1006],{},"+",[185,1008,1009],{},"-",[185,1011,1012],{},"@"," with ",[185,1015,1016],{},"'",[201,1018,1019,1024,1029],{},[216,1020,1021],{},[185,1022,1023],{},"xlsx",[216,1025,1026],{},[185,1027,1028],{},".xlsx",[216,1030,1031,1032,382,1035,382,1037,1040],{},"Three sheets: ",[185,1033,1034],{},"Summary",[185,1036,303],{},[185,1038,1039],{},"Tests",". Frozen header row, filters, coloured result cells.",[201,1042,1043,1048,1053],{},[216,1044,1045],{},[185,1046,1047],{},"pdf",[216,1049,1050],{},[185,1051,1052],{},".pdf",[216,1054,1055],{},"PDF 1.4, landscape A4, Courier (not embedded), repeated header row, page numbers. Shows at most 20,000 rows and 4 custom columns.",[178,1057,1058],{},"CSV, Excel and PDF share one table.",[178,1060,1061],{},[1062,1063,1064],"strong",{},"Requests table columns",[178,1066,1067,382,1070,382,1073,382,1076,382,1079,382,1082,382,1085,382,1088,382,1091,382,1094,382,1097,382,1100,382,1103,382,1106,382,1109,382,1112,382,1115,1118,1119,1122,1123,1125,1126,382,1128,382,1130,423,1132,461],{},[185,1068,1069],{},"#",[185,1071,1072],{},"Iteration",[185,1074,1075],{},"Folder",[185,1077,1078],{},"Request",[185,1080,1081],{},"Method",[185,1083,1084],{},"URL",[185,1086,1087],{},"Status code",[185,1089,1090],{},"Result",[185,1092,1093],{},"Response time (ms)",[185,1095,1096],{},"Size (bytes)",[185,1098,1099],{},"Assertions passed",[185,1101,1102],{},"Assertions failed",[185,1104,1105],{},"Tests passed",[185,1107,1108],{},"Tests failed",[185,1110,1111],{},"Started at",[185,1113,1114],{},"Failure details",[185,1116,1117],{},"Response excerpt (failed only)",", then one column per key set with ",[185,1120,1121],{},"pg.report.set"," (in order of first appearance). ",[185,1124,1090],{}," is ",[185,1127,416],{},[185,1129,419],{},[185,1131,422],{},[185,1133,1134],{},"SKIPPED",[178,1136,1137,1140,1141,1143],{},[1062,1138,1139],{},"Tests table columns"," (Excel ",[185,1142,1039],{}," sheet)",[178,1145,1146,382,1148,382,1150,382,1152,382,1154,239,1157,423,1160,1163,1164,382,1167,239,1170,382,1173,382,1176,1163,1178,461],{},[185,1147,1069],{},[185,1149,1072],{},[185,1151,1075],{},[185,1153,1078],{},[185,1155,1156],{},"Kind",[185,1158,1159],{},"Assertion",[185,1161,1162],{},"Test","), ",[185,1165,1166],{},"Name",[185,1168,1169],{},"Status",[185,1171,1172],{},"PASSED",[185,1174,1175],{},"FAILED",[185,1177,1134],{},[185,1179,1180],{},"Message",[178,1182,1183,1185,1186,461],{},[185,1184,446],{}," accepts at most 100 keys, key length 128 characters and values of 32 KiB. See the ",[245,1187,514],{"href":116},[190,1189,107],{"id":1190},"command-line",[178,1192,1193,1195,1196,461],{},[185,1194,187],{}," runs the same engine without a window. Use it in scripts and CI. The binary ships in the release archives and in the Windows installer. See ",[245,1197,15],{"href":16},[611,1199,1203],{"className":1200,"code":1201,"language":1202,"meta":616,"style":616},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","postguy-cli run --collection ID_OR_NAME --workspace DIR \\\n  [--folder F] [--environment E] [--iterations N] [--delay MS] [--data FILE] \\\n  [--bail] [--requests ID,ID] [--reporters cli,json,junit,html,csv,xlsx,pdf] \\\n  [--out DIR] [--root DIR]\n","bash",[185,1204,1205,1230,1264,1287],{"__ignoreMap":616},[620,1206,1207,1211,1214,1217,1220,1223,1226],{"class":622,"line":623},[620,1208,1210],{"class":1209},"sBMFI","postguy-cli",[620,1212,1213],{"class":674}," run",[620,1215,1216],{"class":674}," --collection",[620,1218,1219],{"class":674}," ID_OR_NAME",[620,1221,1222],{"class":674}," --workspace",[620,1224,1225],{"class":674}," DIR",[620,1227,1229],{"class":1228},"sTEyZ"," \\\n",[620,1231,1232,1235,1238,1241,1244,1247,1250,1253,1256,1259,1262],{"class":622,"line":629},[620,1233,1234],{"class":1228},"  [--folder ",[620,1236,1237],{"class":674},"F]",[620,1239,1240],{"class":1228}," [--environment ",[620,1242,1243],{"class":674},"E]",[620,1245,1246],{"class":1228}," [--iterations ",[620,1248,1249],{"class":674},"N]",[620,1251,1252],{"class":1228}," [--delay ",[620,1254,1255],{"class":674},"MS]",[620,1257,1258],{"class":1228}," [--data ",[620,1260,1261],{"class":674},"FILE]",[620,1263,1229],{"class":1228},[620,1265,1266,1269,1271,1274,1277,1280,1283,1285],{"class":622,"line":635},[620,1267,1268],{"class":1228},"  [--bail] ",[620,1270,552],{"class":650},[620,1272,1273],{"class":1228},"--requests ID,ID",[620,1275,1276],{"class":650},"]",[620,1278,1279],{"class":650}," [",[620,1281,1282],{"class":1228},"--reporters cli,json,junit,html,csv,xlsx,pdf",[620,1284,1276],{"class":650},[620,1286,1229],{"class":1228},[620,1288,1289,1292,1295,1297,1299,1302],{"class":622,"line":734},[620,1290,1291],{"class":650},"  [",[620,1293,1294],{"class":1228},"--out DIR",[620,1296,1276],{"class":650},[620,1298,1279],{"class":650},[620,1300,1301],{"class":1228},"--root DIR",[620,1303,737],{"class":650},[195,1305,1306,1316],{},[198,1307,1308],{},[201,1309,1310,1313],{},[204,1311,1312],{},"Flag",[204,1314,1315],{},"Meaning",[211,1317,1318,1328,1338,1348,1358,1367,1377,1387,1397,1407,1434,1446],{},[201,1319,1320,1325],{},[216,1321,1322],{},[185,1323,1324],{},"--collection",[216,1326,1327],{},"Required. A collection id, or its exact name.",[201,1329,1330,1335],{},[216,1331,1332],{},[185,1333,1334],{},"--workspace",[216,1336,1337],{},"Required. The workspace directory to open.",[201,1339,1340,1345],{},[216,1341,1342],{},[185,1343,1344],{},"--folder",[216,1346,1347],{},"A folder id or exact name inside the collection. Its subfolders run too.",[201,1349,1350,1355],{},[216,1351,1352],{},[185,1353,1354],{},"--environment",[216,1356,1357],{},"An environment id or exact name. Default: the workspace's active environment.",[201,1359,1360,1364],{},[216,1361,1362],{},[185,1363,489],{},[216,1365,1366],{},"Whole number, 1 to 10,000. Default: one per data row, or 1.",[201,1368,1369,1374],{},[216,1370,1371],{},[185,1372,1373],{},"--delay",[216,1375,1376],{},"Pause between requests in ms, up to 600,000. Default 0.",[201,1378,1379,1384],{},[216,1380,1381],{},[185,1382,1383],{},"--data",[216,1385,1386],{},"CSV or JSON data file path, with the caps above.",[201,1388,1389,1394],{},[216,1390,1391],{},[185,1392,1393],{},"--bail",[216,1395,1396],{},"Stop on the first request error, script failure or failed test.",[201,1398,1399,1404],{},[216,1400,1401],{},[185,1402,1403],{},"--requests",[216,1405,1406],{},"Comma-separated request ids to run, in that order. Default: every request in tree order.",[201,1408,1409,1414],{},[216,1410,1411],{},[185,1412,1413],{},"--reporters",[216,1415,1416,1417,382,1419,382,1421,382,1423,382,1425,382,1427,382,1429,1431,1432,461],{},"Comma-separated list of ",[185,1418,893],{},[185,1420,643],{},[185,1422,937],{},[185,1424,976],{},[185,1426,615],{},[185,1428,1023],{},[185,1430,1047],{},". Default ",[185,1433,893],{},[201,1435,1436,1441],{},[216,1437,1438],{},[185,1439,1440],{},"--out",[216,1442,1443,1444,461],{},"Directory for file reporters. Default ",[185,1445,461],{},[201,1447,1448,1453],{},[216,1449,1450],{},[185,1451,1452],{},"--root",[216,1454,1455],{},"Confines every path the command touches to this directory.",[373,1457,1458,1465,1470,1486],{},[376,1459,1460,1461,1464],{},"A name must match exactly one item. An unknown or ambiguous name prints the candidates (",[185,1462,1463],{},"name (id)",") and exits 2.",[376,1466,257,1467,1469],{},[185,1468,893],{}," reporter prints to stdout.",[376,1471,1472,1473,239,1476,1479,1480,1482,1483,461],{},"Every other reporter writes ",[185,1474,1475],{},"\u003Cout>\u002Fpostguy-run-\u003Crun id>.\u003Cext>",[185,1477,1478],{},"xml"," for ",[185,1481,937],{},") and prints ",[185,1484,1485],{},"wrote \u003Cpath>",[376,1487,1488],{},"Reporters run in the order given.",[195,1490,1491,1500],{},[198,1492,1493],{},[201,1494,1495,1498],{},[204,1496,1497],{},"Exit code",[204,1499,1315],{},[211,1501,1502,1512,1531],{},[201,1503,1504,1509],{},[216,1505,1506],{},[185,1507,1508],{},"0",[216,1510,1511],{},"The run completed and everything passed.",[201,1513,1514,1519],{},[216,1515,1516],{},[185,1517,1518],{},"1",[216,1520,1521,1522,1524,1525,1527,1528,1530],{},"A request error, script failure or failed test; the run stopped early (",[185,1523,1393],{},"); or a failure outside the run, such as an unreadable data file, an out-of-range ",[185,1526,489],{},"\u002F",[185,1529,1373],{},", a workspace that cannot be opened, or a report that could not be written.",[201,1532,1533,1538],{},[216,1534,1535],{},[185,1536,1537],{},"2",[216,1539,1540,1541,423,1543,1545,1546,423,1548,1550],{},"Usage error: a missing ",[185,1542,1324],{},[185,1544,1334],{},", a non-numeric ",[185,1547,489],{},[185,1549,1373],{},", an unknown reporter, or a collection, folder or environment name that matches nothing or more than one item.",[178,1552,1553,1554,461],{},"The command stores the run in the workspace like the Runner tab does, so it changes ",[185,1555,1556],{},".postguy\u002Fruns\u002F",[368,1558,1560],{"id":1559},"github-actions","GitHub Actions",[178,1562,1563],{},"This job installs the CLI from a release, runs a collection stored in the repository and uploads the JUnit file.",[178,1565,1566,1567,1570,1571,1573,1574,1577,1578,461],{},"The archive name follows ",[185,1568,1569],{},"postguy-cli-\u003Cversion>-linux-\u003Carch>.tar.gz"," and holds a directory with the ",[185,1572,1210],{}," binary. Set ",[185,1575,1576],{},"POSTGUY_VERSION"," to a version that exists on the ",[245,1579,1583],{"href":1580,"rel":1581},"https:\u002F\u002Fgithub.com\u002Fzuramai\u002Fpostguy\u002Freleases",[1582],"nofollow","releases page",[611,1585,1589],{"className":1586,"code":1587,"language":1588,"meta":616,"style":616},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name: api-tests\non: [push, pull_request]\n\njobs:\n  run-collection:\n    runs-on: ubuntu-latest\n    env:\n      POSTGUY_VERSION: \"0.0.3\"   # a release that ships the CLI tarball; use a newer one when it does\n    steps:\n      - uses: actions\u002Fcheckout@v4\n\n      - name: Install postguy-cli\n        run: |\n          name=\"postguy-cli-${POSTGUY_VERSION}-linux-x86_64\"\n          curl -fL -o cli.tar.gz \\\n            \"https:\u002F\u002Fgithub.com\u002Fzuramai\u002Fpostguy\u002Freleases\u002Fdownload\u002Fv${POSTGUY_VERSION}\u002F${name}.tar.gz\"\n          tar -xzf cli.tar.gz\n          echo \"$PWD\u002F${name}\" >> \"$GITHUB_PATH\"\n\n      - name: Run the collection\n        run: |\n          postguy-cli run \\\n            --collection \"Smoke tests\" \\\n            --workspace .\u002Fpostguy-workspace \\\n            --environment \"CI\" \\\n            --reporters cli,junit \\\n            --out reports \\\n            --bail\n\n      - name: Upload the report\n        if: always()\n        uses: actions\u002Fupload-artifact@v4\n        with:\n          name: junit\n          path: reports\u002F*.xml\n","yaml",[185,1590,1591,1602,1622,1628,1636,1644,1655,1663,1682,1690,1704,1709,1722,1734,1740,1746,1752,1758,1764,1769,1781,1790,1796,1802,1808,1814,1820,1826,1832,1837,1849,1860,1871,1879,1890],{"__ignoreMap":616},[620,1592,1593,1597,1599],{"class":622,"line":623},[620,1594,1596],{"class":1595},"swJcz","name",[620,1598,669],{"class":650},[620,1600,1601],{"class":674}," api-tests\n",[620,1603,1604,1608,1610,1612,1615,1617,1620],{"class":622,"line":629},[620,1605,1607],{"class":1606},"sfNiH","on",[620,1609,669],{"class":650},[620,1611,1279],{"class":650},[620,1613,1614],{"class":674},"push",[620,1616,680],{"class":650},[620,1618,1619],{"class":674}," pull_request",[620,1621,737],{"class":650},[620,1623,1624],{"class":622,"line":635},[620,1625,1627],{"emptyLinePlaceholder":1626},true,"\n",[620,1629,1630,1633],{"class":622,"line":734},[620,1631,1632],{"class":1595},"jobs",[620,1634,1635],{"class":650},":\n",[620,1637,1639,1642],{"class":622,"line":1638},5,[620,1640,1641],{"class":1595},"  run-collection",[620,1643,1635],{"class":650},[620,1645,1647,1650,1652],{"class":622,"line":1646},6,[620,1648,1649],{"class":1595},"    runs-on",[620,1651,669],{"class":650},[620,1653,1654],{"class":674}," ubuntu-latest\n",[620,1656,1658,1661],{"class":622,"line":1657},7,[620,1659,1660],{"class":1595},"    env",[620,1662,1635],{"class":650},[620,1664,1666,1669,1671,1673,1676,1678],{"class":622,"line":1665},8,[620,1667,1668],{"class":1595},"      POSTGUY_VERSION",[620,1670,669],{"class":650},[620,1672,659],{"class":650},[620,1674,1675],{"class":674},"0.0.3",[620,1677,666],{"class":650},[620,1679,1681],{"class":1680},"sHwdD","   # a release that ships the CLI tarball; use a newer one when it does\n",[620,1683,1685,1688],{"class":622,"line":1684},9,[620,1686,1687],{"class":1595},"    steps",[620,1689,1635],{"class":650},[620,1691,1693,1696,1699,1701],{"class":622,"line":1692},10,[620,1694,1695],{"class":650},"      -",[620,1697,1698],{"class":1595}," uses",[620,1700,669],{"class":650},[620,1702,1703],{"class":674}," actions\u002Fcheckout@v4\n",[620,1705,1707],{"class":622,"line":1706},11,[620,1708,1627],{"emptyLinePlaceholder":1626},[620,1710,1712,1714,1717,1719],{"class":622,"line":1711},12,[620,1713,1695],{"class":650},[620,1715,1716],{"class":1595}," name",[620,1718,669],{"class":650},[620,1720,1721],{"class":674}," Install postguy-cli\n",[620,1723,1725,1728,1730],{"class":622,"line":1724},13,[620,1726,1727],{"class":1595},"        run",[620,1729,669],{"class":650},[620,1731,1733],{"class":1732},"s7zQu"," |\n",[620,1735,1737],{"class":622,"line":1736},14,[620,1738,1739],{"class":674},"          name=\"postguy-cli-${POSTGUY_VERSION}-linux-x86_64\"\n",[620,1741,1743],{"class":622,"line":1742},15,[620,1744,1745],{"class":674},"          curl -fL -o cli.tar.gz \\\n",[620,1747,1749],{"class":622,"line":1748},16,[620,1750,1751],{"class":674},"            \"https:\u002F\u002Fgithub.com\u002Fzuramai\u002Fpostguy\u002Freleases\u002Fdownload\u002Fv${POSTGUY_VERSION}\u002F${name}.tar.gz\"\n",[620,1753,1755],{"class":622,"line":1754},17,[620,1756,1757],{"class":674},"          tar -xzf cli.tar.gz\n",[620,1759,1761],{"class":622,"line":1760},18,[620,1762,1763],{"class":674},"          echo \"$PWD\u002F${name}\" >> \"$GITHUB_PATH\"\n",[620,1765,1767],{"class":622,"line":1766},19,[620,1768,1627],{"emptyLinePlaceholder":1626},[620,1770,1772,1774,1776,1778],{"class":622,"line":1771},20,[620,1773,1695],{"class":650},[620,1775,1716],{"class":1595},[620,1777,669],{"class":650},[620,1779,1780],{"class":674}," Run the collection\n",[620,1782,1784,1786,1788],{"class":622,"line":1783},21,[620,1785,1727],{"class":1595},[620,1787,669],{"class":650},[620,1789,1733],{"class":1732},[620,1791,1793],{"class":622,"line":1792},22,[620,1794,1795],{"class":674},"          postguy-cli run \\\n",[620,1797,1799],{"class":622,"line":1798},23,[620,1800,1801],{"class":674},"            --collection \"Smoke tests\" \\\n",[620,1803,1805],{"class":622,"line":1804},24,[620,1806,1807],{"class":674},"            --workspace .\u002Fpostguy-workspace \\\n",[620,1809,1811],{"class":622,"line":1810},25,[620,1812,1813],{"class":674},"            --environment \"CI\" \\\n",[620,1815,1817],{"class":622,"line":1816},26,[620,1818,1819],{"class":674},"            --reporters cli,junit \\\n",[620,1821,1823],{"class":622,"line":1822},27,[620,1824,1825],{"class":674},"            --out reports \\\n",[620,1827,1829],{"class":622,"line":1828},28,[620,1830,1831],{"class":674},"            --bail\n",[620,1833,1835],{"class":622,"line":1834},29,[620,1836,1627],{"emptyLinePlaceholder":1626},[620,1838,1840,1842,1844,1846],{"class":622,"line":1839},30,[620,1841,1695],{"class":650},[620,1843,1716],{"class":1595},[620,1845,669],{"class":650},[620,1847,1848],{"class":674}," Upload the report\n",[620,1850,1852,1855,1857],{"class":622,"line":1851},31,[620,1853,1854],{"class":1595},"        if",[620,1856,669],{"class":650},[620,1858,1859],{"class":674}," always()\n",[620,1861,1863,1866,1868],{"class":622,"line":1862},32,[620,1864,1865],{"class":1595},"        uses",[620,1867,669],{"class":650},[620,1869,1870],{"class":674}," actions\u002Fupload-artifact@v4\n",[620,1872,1874,1877],{"class":622,"line":1873},33,[620,1875,1876],{"class":1595},"        with",[620,1878,1635],{"class":650},[620,1880,1882,1885,1887],{"class":622,"line":1881},34,[620,1883,1884],{"class":1595},"          name",[620,1886,669],{"class":650},[620,1888,1889],{"class":674}," junit\n",[620,1891,1893,1896,1898],{"class":622,"line":1892},35,[620,1894,1895],{"class":1595},"          path",[620,1897,669],{"class":650},[620,1899,1900],{"class":674}," reports\u002F*.xml\n",[373,1902,1903,1909,1915],{},[376,1904,1905,1906,1908],{},"The step fails when ",[185,1907,1210],{}," exits with 1 or 2.",[376,1910,1911,1914],{},[185,1912,1913],{},"--reporters cli,junit"," keeps the console text and writes the XML in one run.",[376,1916,1917,1918,1921,1922,818],{},"Use a dedicated environment without secrets for CI, or provide secret values through your own mechanism. Secret variable values live in ",[185,1919,1920],{},".postguy\u002Fsecrets.json",", which is not part of the files you commit (see ",[245,1923,97],{"href":98},[820,1925,1926,1927,382,1930,382,1933,386,1935,1938,1939,1942,1943,386,1946,461],{},"Everything the runner does is also available as tools: ",[185,1928,1929],{},"collection_run",[185,1931,1932],{},"run_list",[185,1934,929],{},[185,1936,1937],{},"run_export"," through ",[185,1940,1941],{},"postguy-cli call",". See ",[245,1944,1945],{"href":108},"CLI",[245,1947,111],{"href":112},[1949,1950,1951],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":616,"searchDepth":629,"depth":629,"links":1953},[1954,1955,1958,1959,1960,1961,1962],{"id":192,"depth":629,"text":193},{"id":264,"depth":629,"text":265,"children":1956},[1957],{"id":370,"depth":635,"text":371},{"id":467,"depth":629,"text":468},{"id":747,"depth":629,"text":748},{"id":834,"depth":629,"text":835},{"id":859,"depth":629,"text":860},{"id":1190,"depth":629,"text":107,"children":1963},[1964],{"id":1559,"depth":635,"text":1560},"Run a collection or folder in sequence with iterations, data files and reports. Use the Runner tab or postguy-cli run.","md",null,{},{"title":65,"description":1965},"zF_J_vp4Qj7ZlpoH3Ta7rQhgDSAqgjqfOxziKkjRZJw",[1972,1974],{"title":61,"path":62,"stem":63,"description":1973,"children":-1},"Pre-request and post-response scripts, the Tests tab with 28 assertion operators, execution order and sandbox limits.",{"title":69,"path":70,"stem":71,"description":1975,"children":-1},"Import Postman, OpenAPI, HAR, cURL, Bruno folders and .proto files. Export collections, environments, globals and the whole workspace.",1793179613009]