[{"data":1,"prerenderedAt":753},["ShallowReactive",2],{"docs-/docs/troubleshooting/migration-guide":3},{"id":4,"title":5,"body":6,"description":745,"extension":746,"meta":747,"navigation":748,"path":749,"seo":750,"stem":751,"__hash__":752},"docs/docs/troubleshooting/migration-guide.md","Migration Guide",{"type":7,"value":8,"toc":737},"minimark",[9,13,22,31,37,108,131,136,202,222,239,246,258,262,357,361,501,506,562,567,627,631,712,716,733],[10,11,5],"h1",{"id":12},"migration-guide",[14,15,16,17,21],"p",{},"Breaking changes from older TestFlowKit versions. Run ",[18,19,20],"code",{},"tkit validate"," after migrating.",[23,24,26,27,30],"h2",{"id":25},"_1-environment-variables-replaces-environments","1. Environment variables (replaces ",[18,28,29],{},"environments",")",[14,32,33],{},[34,35,36],"strong",{},"Before:",[38,39,44],"pre",{"className":40,"code":41,"language":42,"meta":43,"style":43},"language-yaml shiki shiki-themes github-light github-dark","active_environment: \"local\"\nenvironments:\n  local:\n    frontend_base_url: \"http://localhost:3000\"\n  staging:\n    frontend_base_url: \"https://staging.example.com\"\n","yaml","",[18,45,46,63,71,79,90,98],{"__ignoreMap":43},[47,48,51,55,59],"span",{"class":49,"line":50},"line",1,[47,52,54],{"class":53},"s9eBZ","active_environment",[47,56,58],{"class":57},"sVt8B",": ",[47,60,62],{"class":61},"sZZnC","\"local\"\n",[47,64,66,68],{"class":49,"line":65},2,[47,67,29],{"class":53},[47,69,70],{"class":57},":\n",[47,72,74,77],{"class":49,"line":73},3,[47,75,76],{"class":53},"  local",[47,78,70],{"class":57},[47,80,82,85,87],{"class":49,"line":81},4,[47,83,84],{"class":53},"    frontend_base_url",[47,86,58],{"class":57},[47,88,89],{"class":61},"\"http://localhost:3000\"\n",[47,91,93,96],{"class":49,"line":92},5,[47,94,95],{"class":53},"  staging",[47,97,70],{"class":57},[47,99,101,103,105],{"class":49,"line":100},6,[47,102,84],{"class":53},[47,104,58],{"class":57},[47,106,107],{"class":61},"\"https://staging.example.com\"\n",[38,109,113],{"className":110,"code":111,"language":112,"meta":43,"style":43},"language-bash shiki shiki-themes github-light github-dark","tkit run --env staging\n","bash",[18,114,115],{"__ignoreMap":43},[47,116,117,121,124,128],{"class":49,"line":50},[47,118,120],{"class":119},"sScJk","tkit",[47,122,123],{"class":61}," run",[47,125,127],{"class":126},"sj4cs"," --env",[47,129,130],{"class":61}," staging\n",[14,132,133],{},[34,134,135],{},"After:",[38,137,139],{"className":40,"code":138,"language":42,"meta":43,"style":43},"settings:\n  env_file: \".env.local.yml\"\n\nenv:\n  base_url: \"http://localhost:3000\"\n\nfrontend:\n  base_url: \"{{ env.base_url }}\"\n",[18,140,141,148,158,164,171,180,184,192],{"__ignoreMap":43},[47,142,143,146],{"class":49,"line":50},[47,144,145],{"class":53},"settings",[47,147,70],{"class":57},[47,149,150,153,155],{"class":49,"line":65},[47,151,152],{"class":53},"  env_file",[47,154,58],{"class":57},[47,156,157],{"class":61},"\".env.local.yml\"\n",[47,159,160],{"class":49,"line":73},[47,161,163],{"emptyLinePlaceholder":162},true,"\n",[47,165,166,169],{"class":49,"line":81},[47,167,168],{"class":53},"env",[47,170,70],{"class":57},[47,172,173,176,178],{"class":49,"line":92},[47,174,175],{"class":53},"  base_url",[47,177,58],{"class":57},[47,179,89],{"class":61},[47,181,182],{"class":49,"line":100},[47,183,163],{"emptyLinePlaceholder":162},[47,185,187,190],{"class":49,"line":186},7,[47,188,189],{"class":53},"frontend",[47,191,70],{"class":57},[47,193,195,197,199],{"class":49,"line":194},8,[47,196,175],{"class":53},[47,198,58],{"class":57},[47,200,201],{"class":61},"\"{{ env.base_url }}\"\n",[38,203,205],{"className":40,"code":204,"language":42,"meta":43,"style":43},"# .env.staging.yml\nbase_url: \"https://staging.example.com\"\n",[18,206,207,213],{"__ignoreMap":43},[47,208,209],{"class":49,"line":50},[47,210,212],{"class":211},"sJ8bj","# .env.staging.yml\n",[47,214,215,218,220],{"class":49,"line":65},[47,216,217],{"class":53},"base_url",[47,219,58],{"class":57},[47,221,107],{"class":61},[38,223,225],{"className":110,"code":224,"language":112,"meta":43,"style":43},"tkit run --env-file .env.staging.yml\n",[18,226,227],{"__ignoreMap":43},[47,228,229,231,233,236],{"class":49,"line":50},[47,230,120],{"class":119},[47,232,123],{"class":61},[47,234,235],{"class":126}," --env-file",[47,237,238],{"class":61}," .env.staging.yml\n",[14,240,241,242,245],{},"In Gherkin and config, replace environment-specific keys with ",[18,243,244],{},"{{ env.variable_name }}",".",[23,247,249,250,253,254,257],{"id":248},"_2-unified-apis-replaces-backend-graphql-blocks","2. Unified APIs (replaces ",[18,251,252],{},"backend"," + ",[18,255,256],{},"graphql"," blocks)",[14,259,260],{},[34,261,36],{},[38,263,265],{"className":40,"code":264,"language":42,"meta":43,"style":43},"backend:\n  baseUrl: \"https://api.example.com\"\n  endpoints:\n    get_users:\n      method: GET\n      path: \"/users\"\n\ngraphql:\n  url: \"https://api.example.com/graphql\"\n  queries:\n    get_user: \"queries/get_user.graphql\"\n",[18,266,267,273,283,290,297,307,317,321,327,338,346],{"__ignoreMap":43},[47,268,269,271],{"class":49,"line":50},[47,270,252],{"class":53},[47,272,70],{"class":57},[47,274,275,278,280],{"class":49,"line":65},[47,276,277],{"class":53},"  baseUrl",[47,279,58],{"class":57},[47,281,282],{"class":61},"\"https://api.example.com\"\n",[47,284,285,288],{"class":49,"line":73},[47,286,287],{"class":53},"  endpoints",[47,289,70],{"class":57},[47,291,292,295],{"class":49,"line":81},[47,293,294],{"class":53},"    get_users",[47,296,70],{"class":57},[47,298,299,302,304],{"class":49,"line":92},[47,300,301],{"class":53},"      method",[47,303,58],{"class":57},[47,305,306],{"class":61},"GET\n",[47,308,309,312,314],{"class":49,"line":100},[47,310,311],{"class":53},"      path",[47,313,58],{"class":57},[47,315,316],{"class":61},"\"/users\"\n",[47,318,319],{"class":49,"line":186},[47,320,163],{"emptyLinePlaceholder":162},[47,322,323,325],{"class":49,"line":194},[47,324,256],{"class":53},[47,326,70],{"class":57},[47,328,330,333,335],{"class":49,"line":329},9,[47,331,332],{"class":53},"  url",[47,334,58],{"class":57},[47,336,337],{"class":61},"\"https://api.example.com/graphql\"\n",[47,339,341,344],{"class":49,"line":340},10,[47,342,343],{"class":53},"  queries",[47,345,70],{"class":57},[47,347,349,352,354],{"class":49,"line":348},11,[47,350,351],{"class":53},"    get_user",[47,353,58],{"class":57},[47,355,356],{"class":61},"\"queries/get_user.graphql\"\n",[14,358,359],{},[34,360,135],{},[38,362,364],{"className":40,"code":363,"language":42,"meta":43,"style":43},"apis:\n  definitions:\n    my_api:\n      type: rest\n      base_url: \"https://api.example.com\"\n      endpoints:\n        get_users:\n          method: GET\n          path: \"/users\"\n    my_graphql:\n      type: graphql\n      endpoint: \"https://api.example.com/graphql\"\n      operations:\n        get_user:\n          type: query\n          operation: \"queries/get_user.graphql\"\n",[18,365,366,373,380,387,397,406,413,420,429,438,445,454,464,472,480,491],{"__ignoreMap":43},[47,367,368,371],{"class":49,"line":50},[47,369,370],{"class":53},"apis",[47,372,70],{"class":57},[47,374,375,378],{"class":49,"line":65},[47,376,377],{"class":53},"  definitions",[47,379,70],{"class":57},[47,381,382,385],{"class":49,"line":73},[47,383,384],{"class":53},"    my_api",[47,386,70],{"class":57},[47,388,389,392,394],{"class":49,"line":81},[47,390,391],{"class":53},"      type",[47,393,58],{"class":57},[47,395,396],{"class":61},"rest\n",[47,398,399,402,404],{"class":49,"line":92},[47,400,401],{"class":53},"      base_url",[47,403,58],{"class":57},[47,405,282],{"class":61},[47,407,408,411],{"class":49,"line":100},[47,409,410],{"class":53},"      endpoints",[47,412,70],{"class":57},[47,414,415,418],{"class":49,"line":186},[47,416,417],{"class":53},"        get_users",[47,419,70],{"class":57},[47,421,422,425,427],{"class":49,"line":194},[47,423,424],{"class":53},"          method",[47,426,58],{"class":57},[47,428,306],{"class":61},[47,430,431,434,436],{"class":49,"line":329},[47,432,433],{"class":53},"          path",[47,435,58],{"class":57},[47,437,316],{"class":61},[47,439,440,443],{"class":49,"line":340},[47,441,442],{"class":53},"    my_graphql",[47,444,70],{"class":57},[47,446,447,449,451],{"class":49,"line":348},[47,448,391],{"class":53},[47,450,58],{"class":57},[47,452,453],{"class":61},"graphql\n",[47,455,457,460,462],{"class":49,"line":456},12,[47,458,459],{"class":53},"      endpoint",[47,461,58],{"class":57},[47,463,337],{"class":61},[47,465,467,470],{"class":49,"line":466},13,[47,468,469],{"class":53},"      operations",[47,471,70],{"class":57},[47,473,475,478],{"class":49,"line":474},14,[47,476,477],{"class":53},"        get_user",[47,479,70],{"class":57},[47,481,483,486,488],{"class":49,"line":482},15,[47,484,485],{"class":53},"          type",[47,487,58],{"class":57},[47,489,490],{"class":61},"query\n",[47,492,494,497,499],{"class":49,"line":493},16,[47,495,496],{"class":53},"          operation",[47,498,58],{"class":57},[47,500,356],{"class":61},[14,502,503],{},[34,504,505],{},"Step syntax change:",[507,508,509,522],"table",{},[510,511,512],"thead",{},[513,514,515,519],"tr",{},[516,517,518],"th",{},"Old",[516,520,521],{},"New",[523,524,525,538,550],"tbody",{},[513,526,527,533],{},[528,529,530],"td",{},[18,531,532],{},"I prepare a REST request to \"get_users\"",[528,534,535],{},[18,536,537],{},"I prepare a request to \"my_api.get_users\"",[513,539,540,545],{},[528,541,542],{},[18,543,544],{},"I prepare a GraphQL request for the \"get_user\" query",[528,546,547],{},[18,548,549],{},"I prepare a request to \"my_graphql.get_user\"",[513,551,552,557],{},[528,553,554],{},[18,555,556],{},"I send the GraphQL request",[528,558,559],{},[18,560,561],{},"I send the request",[14,563,564],{},[34,565,566],{},"Field renames:",[507,568,569,577],{},[510,570,571],{},[513,572,573,575],{},[516,574,518],{},[516,576,521],{},[523,578,579,590,603,615],{},[513,580,581,586],{},[528,582,583],{},[18,584,585],{},"baseUrl",[528,587,588],{},[18,589,217],{},[513,591,592,598],{},[528,593,594,597],{},[18,595,596],{},"url"," (GraphQL)",[528,599,600],{},[18,601,602],{},"endpoint",[513,604,605,610],{},[528,606,607],{},[18,608,609],{},"headers",[528,611,612],{},[18,613,614],{},"default_headers",[513,616,617,622],{},[528,618,619],{},[18,620,621],{},"queries",[528,623,624],{},[18,625,626],{},"operations",[23,628,630],{"id":629},"checklist","Checklist",[632,633,636,653,664,680,694,704],"ul",{"className":634},[635],"contains-task-list",[637,638,641,645,646,648,649,652],"li",{"className":639},[640],"task-list-item",[642,643],"input",{"disabled":162,"type":644},"checkbox"," Replace ",[18,647,29],{}," with ",[18,650,651],{},"env:"," + env files",[637,654,656,645,658,648,661],{"className":655},[640],[642,657],{"disabled":162,"type":644},[18,659,660],{},"--env",[18,662,663],{},"--env-file",[637,665,667,669,670,673,674,676,677],{"className":666},[640],[642,668],{"disabled":162,"type":644}," Move ",[18,671,672],{},"frontend.base_url"," into ",[18,675,189],{}," section with ",[18,678,679],{},"{{ env.base_url }}",[637,681,683,685,686,688,689,673,691],{"className":682},[640],[642,684],{"disabled":162,"type":644}," Merge ",[18,687,252],{}," and ",[18,690,256],{},[18,692,693],{},"apis.definitions",[637,695,697,699,700,703],{"className":696},[640],[642,698],{"disabled":162,"type":644}," Update all feature files to ",[18,701,702],{},"\"api_name.endpoint_name\""," syntax",[637,705,707,709,710],{"className":706},[640],[642,708],{"disabled":162,"type":644}," Run ",[18,711,20],{},[23,713,715],{"id":714},"next-steps","Next Steps",[632,717,718,726],{},[637,719,720,725],{},[721,722,724],"a",{"href":723},"/docs/config/overview","testflowkit.yml"," — Current config reference",[637,727,728,732],{},[721,729,731],{"href":730},"/docs/guides/api-testing","API Testing"," — Updated API steps",[734,735,736],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":43,"searchDepth":65,"depth":65,"links":738},[739,741,743,744],{"id":25,"depth":65,"text":740},"1. Environment variables (replaces environments)",{"id":248,"depth":65,"text":742},"2. Unified APIs (replaces backend + graphql blocks)",{"id":629,"depth":65,"text":630},{"id":714,"depth":65,"text":715},"Guide for migrating from older TestFlowKit versions","md",{},{"title":5},"/docs/troubleshooting/migration-guide",{"title":5,"description":745},"docs/troubleshooting/migration-guide","oixNBg6slrq6fjl74_Wjo5V2s7_Hu1Mk5EjYUzhZ2qo",1781768344834]