[{"data":1,"prerenderedAt":1020},["ShallowReactive",2],{"navigation":3,"\u002Frecipes\u002Ftesting\u002Fnuxt-test-utils":208,"\u002Frecipes\u002Ftesting\u002Fnuxt-test-utils-surround":1015},[4,98,175],{"title":5,"path":6,"stem":7,"children":8,"icon":97},"Guide","\u002Fguide","1.guide\u002F1.index",[9,12,17,22,46,61,79],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fguide\u002Finstallation","1.guide\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick start","\u002Fguide\u002Fquick-start","1.guide\u002F3.quick-start","i-lucide-rocket",{"title":23,"path":24,"stem":25,"children":26,"icon":45},"Server","\u002Fguide\u002Fserver","1.guide\u002F4.server\u002F1.index",[27,30,35,40],{"title":28,"path":24,"stem":25,"icon":29},"Usage","i-lucide-server",{"title":31,"path":32,"stem":33,"icon":34},"Config file","\u002Fguide\u002Fserver\u002Fconfig-file","1.guide\u002F4.server\u002F2.config-file","i-lucide-file-cog",{"title":36,"path":37,"stem":38,"icon":39},"Options","\u002Fguide\u002Fserver\u002Foptions","1.guide\u002F4.server\u002F3.options","i-lucide-settings",{"title":41,"path":42,"stem":43,"icon":44},"Advanced","\u002Fguide\u002Fserver\u002Fadvanced","1.guide\u002F4.server\u002F4.advanced","i-lucide-flask-conical",false,{"title":47,"path":48,"stem":49,"children":50,"icon":45},"Client","\u002Fguide\u002Fclient","1.guide\u002F5.client\u002F1.index",[51,53,58],{"title":28,"path":48,"stem":49,"icon":52},"i-lucide-monitor-smartphone",{"title":54,"path":55,"stem":56,"icon":57},"Live queries","\u002Fguide\u002Fclient\u002Flive-queries","1.guide\u002F5.client\u002F2.live-queries","i-lucide-radio",{"title":41,"path":59,"stem":60,"icon":44},"\u002Fguide\u002Fclient\u002Fadvanced","1.guide\u002F5.client\u002F3.advanced",{"title":62,"path":63,"stem":64,"children":65,"icon":45},"Development socket","\u002Fguide\u002Fsocket","1.guide\u002F6.socket\u002F1.index",[66,68,71,74],{"title":28,"path":63,"stem":64,"icon":67},"i-lucide-plug",{"title":36,"path":69,"stem":70,"icon":39},"\u002Fguide\u002Fsocket\u002Foptions","1.guide\u002F6.socket\u002F2.options",{"title":41,"path":72,"stem":73,"icon":44},"\u002Fguide\u002Fsocket\u002Fadvanced","1.guide\u002F6.socket\u002F3.advanced",{"title":75,"path":76,"stem":77,"icon":78},"PGlite in dev, Postgres in prod","\u002Fguide\u002Fsocket\u002Fdevelopment-only","1.guide\u002F6.socket\u002F4.development-only","i-lucide-cloud-upload",{"title":80,"path":81,"stem":82,"children":83,"icon":45},"DevTools & tooling","\u002Fguide\u002Fdevtools","1.guide\u002F7.devtools\u002F1.index",[84,87,92],{"title":85,"path":81,"stem":82,"icon":86},"DevTools tab","i-lucide-wrench",{"title":88,"path":89,"stem":90,"icon":91},"Actions","\u002Fguide\u002Fdevtools\u002Factions","1.guide\u002F7.devtools\u002F2.actions","i-lucide-zap",{"title":93,"path":94,"stem":95,"icon":96},"Terminal","\u002Fguide\u002Fdevtools\u002Fterminal","1.guide\u002F7.devtools\u002F3.terminal","i-lucide-square-terminal","i-lucide-book-open",{"title":99,"icon":100,"path":101,"stem":102,"children":103,"page":45},"Recipes","i-lucide-chef-hat","\u002Frecipes","2.recipes",[104,116,138,159,171],{"title":105,"path":106,"stem":107,"children":108,"icon":45},"Migrations","\u002Frecipes\u002Fmigrations","2.recipes\u002F1.migrations\u002F1.index",[109,111],{"title":28,"path":106,"stem":107,"icon":110},"i-lucide-database-backup",{"title":112,"path":113,"stem":114,"icon":115},"Edited migrations","\u002Frecipes\u002Fmigrations\u002Fedited-migrations","2.recipes\u002F1.migrations\u002F2.edited-migrations","i-lucide-file-diff",{"title":117,"path":118,"stem":119,"children":120,"icon":45},"Testing","\u002Frecipes\u002Ftesting","2.recipes\u002F2.testing\u002F1.index",[121,123,128,133],{"title":28,"path":118,"stem":119,"icon":122},"i-lucide-test-tube",{"title":124,"path":125,"stem":126,"icon":127},"Isolation","\u002Frecipes\u002Ftesting\u002Fisolation","2.recipes\u002F2.testing\u002F2.isolation","i-lucide-git-fork",{"title":129,"path":130,"stem":131,"icon":132},"vitest","\u002Frecipes\u002Ftesting\u002Fvitest","2.recipes\u002F2.testing\u002F3.vitest","i-simple-icons-vitest",{"title":134,"path":135,"stem":136,"icon":137},"@nuxt\u002Ftest-utils","\u002Frecipes\u002Ftesting\u002Fnuxt-test-utils","2.recipes\u002F2.testing\u002F4.nuxt-test-utils","i-simple-icons-nuxt",{"title":139,"path":140,"stem":141,"children":142,"icon":45},"Deploy","\u002Frecipes\u002Fdeploy","2.recipes\u002F3.deploy\u002F1.index",[143,144,149,154],{"title":139,"path":140,"stem":141},{"title":145,"path":146,"stem":147,"icon":148},"Any Postgres","\u002Frecipes\u002Fdeploy\u002Fpostgres","2.recipes\u002F3.deploy\u002F2.postgres","i-lucide-database",{"title":150,"path":151,"stem":152,"icon":153},"Netlify","\u002Frecipes\u002Fdeploy\u002Fnetlify","2.recipes\u002F3.deploy\u002F3.netlify","i-simple-icons-netlify",{"title":155,"path":156,"stem":157,"icon":158},"Neon","\u002Frecipes\u002Fdeploy\u002Fneon","2.recipes\u002F3.deploy\u002F4.neon","i-simple-icons-neon",{"title":160,"path":161,"stem":162,"children":163,"icon":45},"Outside Nuxt","\u002Frecipes\u002Foutside-nuxt","2.recipes\u002F4.outside-nuxt\u002F1.index",[164,167],{"title":165,"path":161,"stem":162,"icon":166},"Config and provider","i-lucide-package",{"title":168,"path":169,"stem":170,"icon":67},"Socket server","\u002Frecipes\u002Foutside-nuxt\u002Fsocket","2.recipes\u002F4.outside-nuxt\u002F2.socket",{"title":172,"path":173,"stem":174,"icon":67},"Nitro's useDatabase","\u002Frecipes\u002Fnitro-database","2.recipes\u002F5.nitro-database",{"title":176,"icon":177,"path":178,"stem":179,"children":180,"page":45},"Reference","i-lucide-code-xml","\u002Freference","3.reference",[181,185,189,193,198,203],{"title":182,"path":183,"stem":184,"icon":34},"Config files","\u002Freference\u002Fconfig-files","3.reference\u002F1.config-files",{"title":186,"path":187,"stem":188,"icon":39},"Module options","\u002Freference\u002Fmodule-options","3.reference\u002F2.module-options",{"title":190,"path":191,"stem":192,"icon":67},"Socket options","\u002Freference\u002Fsocket-options","3.reference\u002F3.socket-options",{"title":194,"path":195,"stem":196,"icon":197},"Exports","\u002Freference\u002Fexports","3.reference\u002F4.exports","i-lucide-boxes",{"title":199,"path":200,"stem":201,"icon":202},"Hooks","\u002Freference\u002Fhooks","3.reference\u002F5.hooks","i-lucide-anchor",{"title":204,"path":205,"stem":206,"icon":207},"Environment","\u002Freference\u002Fenvironment","3.reference\u002F6.environment","i-lucide-variable",{"id":209,"title":134,"body":210,"description":1008,"extension":1009,"links":1010,"meta":1011,"navigation":1012,"path":135,"seo":1013,"stem":136,"__hash__":1014},"docs\u002F2.recipes\u002F2.testing\u002F4.nuxt-test-utils.md",{"type":211,"value":212,"toc":1003},"minimark",[213,234,655,662,667,673,860,867,871,930,934,937,999],[214,215,216,217,226,227,230,231,233],"p",{},"An end-to-end suite with ",[218,219,223],"a",{"href":220,"rel":221},"https:\u002F\u002Fnuxt.com\u002Fdocs\u002Fgetting-started\u002Ftesting",[222],"nofollow",[224,225,134],"code",{}," builds the app and boots it in a process of its own, which reaches the test database only through a URL. Serve it over the socket, create it before ",[224,228,229],{},"setup()",", and hand ",[224,232,229],{}," its variables:",[235,236,242],"pre",{"className":237,"code":238,"filename":239,"language":240,"meta":241,"style":241},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { afterAll, describe, expect, it } from 'vitest'\nimport { $fetch, setup } from '@nuxt\u002Ftest-utils\u002Fe2e'\nimport { createTestDatabase } from 'nuxt-pglite\u002Ftesting'\n\ndescribe('items', async () => {\n  \u002F\u002F Before `setup()`, which reads `env` when it is called.\n  const db = await createTestDatabase({\n    config: 'server\u002Fpglite.config',\n    socket: true,\n    exportEnv: false,\n  })\n  \u002F\u002F Registered before `setup()`'s own, so it runs after the app is stopped.\n  afterAll(() => db.close())\n\n  await setup({ env: db.env })\n\n  it('reads the rows the test wrote', async () => {\n    await db.pg.query(\"INSERT INTO items (name) VALUES ('written by the test')\")\n    expect(await $fetch('\u002Fapi\u002Fitems')).toEqual([{ name: 'written by the test' }])\n  })\n})\n","test\u002Fe2e\u002Fitems.test.ts","ts","",[224,243,244,292,318,339,346,379,386,409,428,442,455,464,470,494,499,528,533,558,588,640,647],{"__ignoreMap":241},[245,246,249,253,257,261,264,267,269,272,274,277,280,283,286,289],"span",{"class":247,"line":248},"line",1,[245,250,252],{"class":251},"s7zQu","import",[245,254,256],{"class":255},"sMK4o"," {",[245,258,260],{"class":259},"sTEyZ"," afterAll",[245,262,263],{"class":255},",",[245,265,266],{"class":259}," describe",[245,268,263],{"class":255},[245,270,271],{"class":259}," expect",[245,273,263],{"class":255},[245,275,276],{"class":259}," it",[245,278,279],{"class":255}," }",[245,281,282],{"class":251}," from",[245,284,285],{"class":255}," '",[245,287,129],{"class":288},"sfazB",[245,290,291],{"class":255},"'\n",[245,293,295,297,299,302,304,307,309,311,313,316],{"class":247,"line":294},2,[245,296,252],{"class":251},[245,298,256],{"class":255},[245,300,301],{"class":259}," $fetch",[245,303,263],{"class":255},[245,305,306],{"class":259}," setup",[245,308,279],{"class":255},[245,310,282],{"class":251},[245,312,285],{"class":255},[245,314,315],{"class":288},"@nuxt\u002Ftest-utils\u002Fe2e",[245,317,291],{"class":255},[245,319,321,323,325,328,330,332,334,337],{"class":247,"line":320},3,[245,322,252],{"class":251},[245,324,256],{"class":255},[245,326,327],{"class":259}," createTestDatabase",[245,329,279],{"class":255},[245,331,282],{"class":251},[245,333,285],{"class":255},[245,335,336],{"class":288},"nuxt-pglite\u002Ftesting",[245,338,291],{"class":255},[245,340,342],{"class":247,"line":341},4,[245,343,345],{"emptyLinePlaceholder":344},true,"\n",[245,347,349,353,356,359,362,364,366,370,373,376],{"class":247,"line":348},5,[245,350,352],{"class":351},"s2Zo4","describe",[245,354,355],{"class":259},"(",[245,357,358],{"class":255},"'",[245,360,361],{"class":288},"items",[245,363,358],{"class":255},[245,365,263],{"class":255},[245,367,369],{"class":368},"spNyl"," async",[245,371,372],{"class":255}," ()",[245,374,375],{"class":368}," =>",[245,377,378],{"class":255}," {\n",[245,380,382],{"class":247,"line":381},6,[245,383,385],{"class":384},"sHwdD","  \u002F\u002F Before `setup()`, which reads `env` when it is called.\n",[245,387,389,392,395,398,401,403,406],{"class":247,"line":388},7,[245,390,391],{"class":368},"  const",[245,393,394],{"class":259}," db",[245,396,397],{"class":255}," =",[245,399,400],{"class":251}," await",[245,402,327],{"class":351},[245,404,355],{"class":405},"swJcz",[245,407,408],{"class":255},"{\n",[245,410,412,415,418,420,423,425],{"class":247,"line":411},8,[245,413,414],{"class":405},"    config",[245,416,417],{"class":255},":",[245,419,285],{"class":255},[245,421,422],{"class":288},"server\u002Fpglite.config",[245,424,358],{"class":255},[245,426,427],{"class":255},",\n",[245,429,431,434,436,440],{"class":247,"line":430},9,[245,432,433],{"class":405},"    socket",[245,435,417],{"class":255},[245,437,439],{"class":438},"sfNiH"," true",[245,441,427],{"class":255},[245,443,445,448,450,453],{"class":247,"line":444},10,[245,446,447],{"class":405},"    exportEnv",[245,449,417],{"class":255},[245,451,452],{"class":438}," false",[245,454,427],{"class":255},[245,456,458,461],{"class":247,"line":457},11,[245,459,460],{"class":255},"  }",[245,462,463],{"class":405},")\n",[245,465,467],{"class":247,"line":466},12,[245,468,469],{"class":384},"  \u002F\u002F Registered before `setup()`'s own, so it runs after the app is stopped.\n",[245,471,473,476,478,481,483,485,488,491],{"class":247,"line":472},13,[245,474,475],{"class":351},"  afterAll",[245,477,355],{"class":405},[245,479,480],{"class":255},"()",[245,482,375],{"class":368},[245,484,394],{"class":259},[245,486,487],{"class":255},".",[245,489,490],{"class":351},"close",[245,492,493],{"class":405},"())\n",[245,495,497],{"class":247,"line":496},14,[245,498,345],{"emptyLinePlaceholder":344},[245,500,502,505,507,509,512,515,517,519,521,524,526],{"class":247,"line":501},15,[245,503,504],{"class":251},"  await",[245,506,306],{"class":351},[245,508,355],{"class":405},[245,510,511],{"class":255},"{",[245,513,514],{"class":405}," env",[245,516,417],{"class":255},[245,518,394],{"class":259},[245,520,487],{"class":255},[245,522,523],{"class":259},"env",[245,525,279],{"class":255},[245,527,463],{"class":405},[245,529,531],{"class":247,"line":530},16,[245,532,345],{"emptyLinePlaceholder":344},[245,534,536,539,541,543,546,548,550,552,554,556],{"class":247,"line":535},17,[245,537,538],{"class":351},"  it",[245,540,355],{"class":405},[245,542,358],{"class":255},[245,544,545],{"class":288},"reads the rows the test wrote",[245,547,358],{"class":255},[245,549,263],{"class":255},[245,551,369],{"class":368},[245,553,372],{"class":255},[245,555,375],{"class":368},[245,557,378],{"class":255},[245,559,561,564,566,568,571,573,576,578,581,584,586],{"class":247,"line":560},18,[245,562,563],{"class":251},"    await",[245,565,394],{"class":259},[245,567,487],{"class":255},[245,569,570],{"class":259},"pg",[245,572,487],{"class":255},[245,574,575],{"class":351},"query",[245,577,355],{"class":405},[245,579,580],{"class":255},"\"",[245,582,583],{"class":288},"INSERT INTO items (name) VALUES ('written by the test')",[245,585,580],{"class":255},[245,587,463],{"class":405},[245,589,591,594,596,599,601,603,605,608,610,613,615,618,621,623,626,628,630,633,635,637],{"class":247,"line":590},19,[245,592,593],{"class":351},"    expect",[245,595,355],{"class":405},[245,597,598],{"class":251},"await",[245,600,301],{"class":351},[245,602,355],{"class":405},[245,604,358],{"class":255},[245,606,607],{"class":288},"\u002Fapi\u002Fitems",[245,609,358],{"class":255},[245,611,612],{"class":405},"))",[245,614,487],{"class":255},[245,616,617],{"class":351},"toEqual",[245,619,620],{"class":405},"([",[245,622,511],{"class":255},[245,624,625],{"class":405}," name",[245,627,417],{"class":255},[245,629,285],{"class":255},[245,631,632],{"class":288},"written by the test",[245,634,358],{"class":255},[245,636,279],{"class":255},[245,638,639],{"class":405},"])\n",[245,641,643,645],{"class":247,"line":642},20,[245,644,460],{"class":255},[245,646,463],{"class":405},[245,648,650,653],{"class":247,"line":649},21,[245,651,652],{"class":255},"}",[245,654,463],{"class":259},[214,656,657,658,661],{},"The test writes through ",[224,659,660],{},"db.pg",", in its own process, and the app reads the same rows through the socket.",[663,664,666],"h2",{"id":665},"which-apps-it-fits","Which apps it fits",[214,668,669,670,672],{},"The app's database code has to read the URL: the ",[218,671,75],{"href":76}," setup, with the server side disabled and the development socket on. A route like this one reaches the test database unchanged:",[235,674,677],{"className":237,"code":675,"filename":676,"language":240,"meta":241,"style":241},"import pg from 'pg'\n\nexport default defineEventHandler(async () => {\n  const client = new pg.Client({ connectionString: process.env.DATABASE_URL })\n  await client.connect()\n  try {\n    const { rows } = await client.query('SELECT name FROM items ORDER BY id')\n    return rows\n  } finally {\n    await client.end()\n  }\n})\n","server\u002Fapi\u002Fitems.get.ts",[224,678,679,695,699,721,765,779,786,819,827,836,849,854],{"__ignoreMap":241},[245,680,681,683,686,689,691,693],{"class":247,"line":248},[245,682,252],{"class":251},[245,684,685],{"class":259}," pg ",[245,687,688],{"class":251},"from",[245,690,285],{"class":255},[245,692,570],{"class":288},[245,694,291],{"class":255},[245,696,697],{"class":247,"line":294},[245,698,345],{"emptyLinePlaceholder":344},[245,700,701,704,707,710,712,715,717,719],{"class":247,"line":320},[245,702,703],{"class":251},"export",[245,705,706],{"class":251}," default",[245,708,709],{"class":351}," defineEventHandler",[245,711,355],{"class":259},[245,713,714],{"class":368},"async",[245,716,372],{"class":255},[245,718,375],{"class":368},[245,720,378],{"class":255},[245,722,723,725,728,730,733,736,738,740,742,744,747,749,752,754,756,758,761,763],{"class":247,"line":341},[245,724,391],{"class":368},[245,726,727],{"class":259}," client",[245,729,397],{"class":255},[245,731,732],{"class":255}," new",[245,734,735],{"class":259}," pg",[245,737,487],{"class":255},[245,739,47],{"class":351},[245,741,355],{"class":405},[245,743,511],{"class":255},[245,745,746],{"class":405}," connectionString",[245,748,417],{"class":255},[245,750,751],{"class":259}," process",[245,753,487],{"class":255},[245,755,523],{"class":259},[245,757,487],{"class":255},[245,759,760],{"class":259},"DATABASE_URL",[245,762,279],{"class":255},[245,764,463],{"class":405},[245,766,767,769,771,773,776],{"class":247,"line":348},[245,768,504],{"class":251},[245,770,727],{"class":259},[245,772,487],{"class":255},[245,774,775],{"class":351},"connect",[245,777,778],{"class":405},"()\n",[245,780,781,784],{"class":247,"line":381},[245,782,783],{"class":251},"  try",[245,785,378],{"class":255},[245,787,788,791,793,796,798,800,802,804,806,808,810,812,815,817],{"class":247,"line":388},[245,789,790],{"class":368},"    const",[245,792,256],{"class":255},[245,794,795],{"class":259}," rows",[245,797,279],{"class":255},[245,799,397],{"class":255},[245,801,400],{"class":251},[245,803,727],{"class":259},[245,805,487],{"class":255},[245,807,575],{"class":351},[245,809,355],{"class":405},[245,811,358],{"class":255},[245,813,814],{"class":288},"SELECT name FROM items ORDER BY id",[245,816,358],{"class":255},[245,818,463],{"class":405},[245,820,821,824],{"class":247,"line":411},[245,822,823],{"class":251},"    return",[245,825,826],{"class":259}," rows\n",[245,828,829,831,834],{"class":247,"line":430},[245,830,460],{"class":255},[245,832,833],{"class":251}," finally",[245,835,378],{"class":255},[245,837,838,840,842,844,847],{"class":247,"line":444},[245,839,563],{"class":251},[245,841,727],{"class":259},[245,843,487],{"class":255},[245,845,846],{"class":351},"end",[245,848,778],{"class":405},[245,850,851],{"class":247,"line":457},[245,852,853],{"class":255},"  }\n",[245,855,856,858],{"class":247,"line":466},[245,857,652],{"class":255},[245,859,463],{"class":259},[214,861,862,863,866],{},"With the server side enabled, ",[224,864,865],{},"usePGlite()"," in the built app creates its own instance from the config, not the test one.",[663,868,870],{"id":869},"the-order-of-things","The order of things",[872,873,874,890,909],"ul",{},[875,876,877,883,884,886,887,889],"li",{},[878,879,880,881],"strong",{},"Create before ",[224,882,229],{},": ",[224,885,229],{}," builds and starts the app with the ",[224,888,523],{}," it is given, so the URL has to exist by then.",[875,891,892,897,898,900,901,904,905,908],{},[878,893,894],{},[224,895,896],{},"exportEnv: false",": the variables reach the app through ",[224,899,523],{}," alone, and the test process's ",[224,902,903],{},"process.env"," stays as it was. ",[224,906,907],{},"db.env"," holds them either way.",[875,910,911,919,920,922,923,926,927,929],{},[878,912,913,916,917],{},[224,914,915],{},"afterAll"," before ",[224,918,229],{},": vitest runs ",[224,921,915],{}," hooks in the reverse order of their registration (its default ",[224,924,925],{},"sequence.hooks","), so the database is closed after ",[224,928,229],{},"'s own hook has stopped the app, and the app never loses its database while still running.",[663,931,933],{"id":932},"between-tests","Between tests",[214,935,936],{},"The app is started once per suite, behind one URL, so forking per test does not reach it. Reset the tables the tests write to instead:",[235,938,940],{"className":237,"code":939,"language":240,"meta":241,"style":241},"import { beforeEach } from 'vitest'\n\nbeforeEach(() => db.pg.exec('TRUNCATE items RESTART IDENTITY'))\n",[224,941,942,961,965],{"__ignoreMap":241},[245,943,944,946,948,951,953,955,957,959],{"class":247,"line":248},[245,945,252],{"class":251},[245,947,256],{"class":255},[245,949,950],{"class":259}," beforeEach",[245,952,279],{"class":255},[245,954,282],{"class":251},[245,956,285],{"class":255},[245,958,129],{"class":288},[245,960,291],{"class":255},[245,962,963],{"class":247,"line":294},[245,964,345],{"emptyLinePlaceholder":344},[245,966,967,970,972,974,976,978,980,982,984,987,989,991,994,996],{"class":247,"line":320},[245,968,969],{"class":351},"beforeEach",[245,971,355],{"class":259},[245,973,480],{"class":255},[245,975,375],{"class":368},[245,977,394],{"class":259},[245,979,487],{"class":255},[245,981,570],{"class":259},[245,983,487],{"class":255},[245,985,986],{"class":351},"exec",[245,988,355],{"class":259},[245,990,358],{"class":255},[245,992,993],{"class":288},"TRUNCATE items RESTART IDENTITY",[245,995,358],{"class":255},[245,997,998],{"class":259},"))\n",[1000,1001,1002],"style",{},"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}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .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 .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);}",{"title":241,"searchDepth":248,"depth":294,"links":1004},[1005,1006,1007],{"id":665,"depth":294,"text":666},{"id":869,"depth":294,"text":870},{"id":932,"depth":294,"text":933},"Boot the built app against a test database in an end-to-end suite, with the variables handed to setup().","md",null,{},{"icon":137},{"title":134,"description":1008},"IbkvaT2FD_JapRTCgRXOUZKzM2rxLkfYsTTcPE0_PRg",[1016,1018],{"title":129,"path":130,"stem":131,"description":1017,"icon":132,"children":-1},"One database for the whole run, created in a globalSetup file before the workers start, and reached by them through the socket.",{"title":139,"path":140,"stem":141,"description":1019,"children":-1},"[object Object]",1791474261527]