{
  "stats": {
    "suites": 1,
    "tests": 5,
    "passes": 0,
    "pending": 0,
    "failures": 5,
    "start": "2025-11-07T10:21:12.993Z",
    "end": "2025-11-07T10:21:19.528Z",
    "duration": 6535,
    "testsRegistered": 5,
    "passPercent": 0,
    "pendingPercent": 0,
    "other": 0,
    "hasOther": false,
    "skipped": 0,
    "hasSkipped": false
  },
  "results": [
    {
      "uuid": "e9fa49ff-1284-4153-b187-6d5352d7f9b2",
      "title": "",
      "fullFile": "cypress\\e2e\\mobile_pwa.cy.js",
      "file": "cypress\\e2e\\mobile_pwa.cy.js",
      "beforeHooks": [],
      "afterHooks": [],
      "tests": [],
      "suites": [
        {
          "uuid": "968f19fa-7ba1-4150-b11f-07d3bd05e10a",
          "title": "Gestor coletor PWA",
          "fullFile": "",
          "file": "",
          "beforeHooks": [],
          "afterHooks": [],
          "tests": [
            {
              "title": "carrega e testa ping com dispositivo válido",
              "fullTitle": "Gestor coletor PWA carrega e testa ping com dispositivo válido",
              "timedOut": null,
              "duration": 4558,
              "state": "failed",
              "speed": null,
              "pass": false,
              "fail": true,
              "pending": false,
              "context": null,
              "code": "cy.visit('/mobile/');\ncy.contains('Gestor coletor');\ncy.window().then(win => {\n  win.localStorage.setItem('collectorCfg', JSON.stringify({\n    url: 'http://localhost:8001/mobile',\n    deviceKey: 'DEV-ABC-123'\n  }));\n});\ncy.get('#btnTestPing').click();\ncy.get('#scanStatus').should('contain', 'Conexão OK');",
              "err": {
                "message": "AssertionError: Timed out retrying after 4000ms: expected '<span#scanStatus.muted>' to contain 'Conexão OK'",
                "estack": "AssertionError: Timed out retrying after 4000ms: expected '<span#scanStatus.muted>' to contain 'Conexão OK'\n    at Context.eval (webpack://gestoreasy-v3/./cypress/e2e/mobile_pwa.cy.js:9:26)",
                "diff": null
              },
              "uuid": "f270aa00-b362-403d-8afb-11779830d8b8",
              "parentUUID": "968f19fa-7ba1-4150-b11f-07d3bd05e10a",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "registra item de inventário na fila e sincroniza",
              "fullTitle": "Gestor coletor PWA registra item de inventário na fila e sincroniza",
              "timedOut": null,
              "duration": 335,
              "state": "failed",
              "speed": null,
              "pass": false,
              "fail": true,
              "pending": false,
              "context": null,
              "code": "cy.get('#invProduct').type('SKU-TEST-001');\ncy.get('#invQty').type('2');\ncy.get('#invSubmit').click();\ncy.get('#queueInv').should('not.be.empty');\ncy.get('#btnSync').click();\ncy.get('#syncFeedback').should('contain', 'Sincronizado').or('contain', 'OK');",
              "err": {
                "message": "TypeError: cy.get(...).should(...).or is not a function",
                "estack": "TypeError: cy.get(...).should(...).or is not a function\n    at Context.eval (webpack://gestoreasy-v3/./cypress/e2e/mobile_pwa.cy.js:18:62)\n    at runnable.fn (http://localhost:8000/__cypress/runner/cypress_runner.js:145954:19)\n    at callFn (http://localhost:8000/__cypress/runner/cypress_runner.js:165048:21)\n    at Runnable.run (http://localhost:8000/__cypress/runner/cypress_runner.js:165035:7)\n    at <unknown> (http://localhost:8000/__cypress/runner/cypress_runner.js:171130:30)\n    at PassThroughHandlerContext.finallyHandler (http://localhost:8000/__cypress/runner/cypress_runner.js:4042:23)\n    at PassThroughHandlerContext.tryCatcher (http://localhost:8000/__cypress/runner/cypress_runner.js:1777:23)\n    at Promise._settlePromiseFromHandler (http://localhost:8000/__cypress/runner/cypress_runner.js:1489:31)\n    at Promise._settlePromise (http://localhost:8000/__cypress/runner/cypress_runner.js:1546:18)",
                "diff": null
              },
              "uuid": "b3201d8e-c1f2-442b-ae25-22a1894b1856",
              "parentUUID": "968f19fa-7ba1-4150-b11f-07d3bd05e10a",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "envia evento de recebimento e valida aceite do backend",
              "fullTitle": "Gestor coletor PWA envia evento de recebimento e valida aceite do backend",
              "timedOut": null,
              "duration": 423,
              "state": "failed",
              "speed": null,
              "pass": false,
              "fail": true,
              "pending": false,
              "context": null,
              "code": "cy.request('POST', '/mobile/events', {\n  type: 'receiving',\n  payload: {\n    product: 'SKU-TEST-001',\n    qty: 3,\n    origin: 'DOC-A'\n  }\n}).then(res => {\n  expect([202, 200]).to.include(res.status);\n  expect(res.body).to.have.property('accepted', 1);\n});",
              "err": {
                "message": "AssertionError: expected '<!doctype html>\\n<html lang=\"pt-BR\">\\n  <head>\\n    <meta charset=\"utf-8\" />\\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\" />\\n    <title>Gestor coletor • GestorEasy</title>\\n    <link rel=\"manifest\" href=\"./manifest.webmanifest\">\\n    <link rel=\"icon\" href=\"/assets/logo-light.png\" media=\"(prefers-color-scheme: light)\">\\n    <link rel=\"icon\" href=\"/assets/logo-dark.png\" media=\"(prefers-color-scheme: dark)\">\\n    <link rel=\"apple-touch-icon\" href=\"/assets/logo-light.png\">\\n    <link rel=\"stylesheet\" href=\"./style.css\" />\\n    <meta name=\"theme-color\" content=\"#0ea5e9\" />\\n  </head>\\n  <body>\\n    <header>\\n      <div class=\"brand\">\\n        <img src=\"/assets/logo-light.png\" alt=\"Gestor coletor\" height=\"28\" />\\n        <div>\\n          <h1>Gestor coletor</h1>\\n          <small>GestorEasy • PWA</small>\\n        </div>\\n      </div>\\n    </header>\\n    <main>\\n      <section id=\"pairing\" class=\"card\">\\n        <h2>Pareamento</h2>\\n        <p class=\"muted\">Aponte a câmera para o QR gerado no módulo WMS (Configurações) ou cole a string de pareamento.</p>\\n        <div class=\"grid2\">\\n          <div>\\n            <video id=\"camera\" playsinline muted></video>\\n            <div class=\"actions\">\\n              <button id=\"btnEnableCam\" class=\"btn\">Ativar câmera</button>\\n              <button id=\"btnScanPair\" class=\"btn btn-secondary\">Ler QR de pareamento</button>\\n              <span id=\"scanStatus\" class=\"muted\" aria-live=\"polite\"></span>\\n            </div>\\n          </div>\\n          <div>\\n            <label>String de pareamento\\n              <textarea id=\"pairString\" placeholder=\\'{\"url\":\"https://wms.local/mobile\",\"deviceKey\":\"DEV-ABC-123\"}\\' rows=\"3\"></textarea>\\n            </label>\\n            <div class=\"actions\">\\n              <button id=\"btnApplyPair\" class=\"btn\">Aplicar</button>\\n              <button id=\"btnTestPing\" class=\"btn btn-secondary\">Testar conexão</button>\\n            </div>\\n          </div>\\n        </div>\\n        <div class=\"status\">\\n          <div>URL: <span id=\"stUrl\" class=\"mono\">-</span></div>\\n          <div>Device Key: <span id=\"stDev\" class=\"mono\">-</span></div>\\n          <div>Última sincronização: <span id=\"stSync\" class=\"mono\">-</span></div>\\n        </div>\\n      </section>\\n\\n      <nav id=\"modes\">\\n        <button data-mode=\"inventory\" aria-selected=\"true\">Inventário</button>\\n        <button data-mode=\"receiving\">Recebimento</button>\\n        <button data-mode=\"shipping\">Expedição</button>\\n      </nav>\\n\\n      <section id=\"dashboard\" class=\"card\">\\n        <h2>Resumo do coletor</h2>\\n        <div class=\"grid2\">\\n          <div>\\n            <h3>Composição da fila</h3>\\n            <div id=\"queueBars\" class=\"bars\" aria-label=\"Composição da fila\" style=\"display:flex; gap:8px; align-items:center;\"></div>\\n            <small id=\"queueInfo\" class=\"muted\"></small>\\n          </div>\\n          <div>\\n            <h3>Última sincronização</h3>\\n            <div id=\"syncBars\" class=\"bars\" aria-label=\"Última sincronização\" style=\"display:flex; gap:8px; align-items:center;\"></div>\\n            <small id=\"syncInfo\" class=\"muted\"></small>\\n          </div>\\n        </div>\\n        <div class=\"grid2\" style=\"margin-top:8px;\">\\n          <div>\\n            <h3>Recebimento vs Meta (WMS)</h3>\\n            <div class=\"progress\" aria-label=\"Recebimento vs Meta\" style=\"height:12px; background:#eee; border-radius:6px; overflow:hidden; width:220px;\">\\n              <div id=\"goalRec\" style=\"height:12px; width:0%; background:#2b8a3e;\"></div>\\n            </div>\\n          </div>\\n          <div>\\n            <h3>Expedição vs Recebimento (WMS)</h3>\\n            <div class=\"progress\" aria-label=\"Expedição vs Recebimento\" style=\"height:12px; background:#eee; border-radius:6px; overflow:hidden; width:220px;\">\\n              <div id=\"goalShip\" style=\"height:12px; width:0%; background:#1c7ed6;\"></div>\\n            </div>\\n          </div>\\n        </div>\\n        <small id=\"goalsInfo\" class=\"muted\" style=\"display:block; margin-top:4px;\"></small>\\n        <div style=\"margin-top:8px;\">\\n          <h3>Capturas recentes</h3>\\n          <div id=\"queueChart\" style=\"display:flex; gap:6px; align-items:flex-end; height:120px;\"></div>\\n        </div>\\n      </section>\\n\\n      <section id=\"inventory\" class=\"card\">\\n        <h2>Inventário</h2>\\n        <div class=\"grid2\">\\n          <div>\\n            <label>Produto/ID\\n              <input id=\"invProduct\" type=\"text\" placeholder=\"Escaneie ou digite\" />\\n            </label>\\n            <label>Local/Bin\\n              <input id=\"invBin\" type=\"text\" placeholder=\"Ex.: A1-03-02\" />\\n            </label>\\n            <label>Quantidade\\n              <input id=\"invQty\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" />\\n            </label>\\n            <div class=\"actions\">\\n              <button id=\"invScan\" class=\"btn btn-secondary\">Usar câmera</button>\\n              <button id=\"invSubmit\" class=\"btn\">Registrar contagem</button>\\n            </div>\\n          </div>\\n          <div>\\n            <h3>Fila offline</h3>\\n            <ul id=\"queueInv\" class=\"list\"></ul>\\n          </div>\\n        </div>\\n      </section>\\n\\n      <section id=\"receiving\" class=\"card hidden\">\\n        <h2>Recebimento</h2>\\n        <label>Produto/ID\\n          <input id=\"recProduct\" type=\"text\" placeholder=\"Escaneie ou digite\" />\\n        </label>\\n        <label>Quantidade\\n          <input id=\"recQty\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" />\\n        </label>\\n        <label>Origem (doc/fornecedor)\\n          <input id=\"recOrigin\" type=\"text\" placeholder=\"NF/OC/Fornecedor\" />\\n        </label>\\n        <div class=\"actions\">\\n          <button id=\"recScan\" class=\"btn btn-secondary\">Usar câmera</button>\\n          <button id=\"recSubmit\" class=\"btn\">Registrar entrada</button>\\n        </div>\\n        <h3>Fila offline</h3>\\n        <ul id=\"queueRec\" class=\"list\"></ul>\\n      </section>\\n\\n      <section id=\"shipping\" class=\"card hidden\">\\n        <h2>Expedição</h2>\\n        <label>Produto/ID\\n          <input id=\"shipProduct\" type=\"text\" placeholder=\"Escaneie ou digite\" />\\n        </label>\\n        <label>Quantidade\\n          <input id=\"shipQty\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" />\\n        </label>\\n        <label>Destino (pedido/cliente)\\n          <input id=\"shipDest\" type=\"text\" placeholder=\"Pedido/Cliente\" />\\n        </label>\\n        <div class=\"actions\">\\n          <button id=\"shipScan\" class=\"btn btn-secondary\">Usar câmera</button>\\n          <button id=\"shipSubmit\" class=\"btn\">Registrar saída</button>\\n        </div>\\n        <h3>Fila offline</h3>\\n        <ul id=\"queueShip\" class=\"list\"></ul>\\n      </section>\\n\\n      <section class=\"card\">\\n        <div class=\"actions\">\\n          <button id=\"btnSync\" class=\"btn\">Sincronizar fila</button>\\n          <button id=\"btnClearQueue\" class=\"btn btn-secondary\">Limpar fila</button>\\n          <span id=\"syncFeedback\" class=\"muted\" aria-live=\"polite\"></span>\\n        </div>\\n      </section>\\n    </main>\\n    <footer>\\n      <small>© GestorEasy • PWA Coletor</small>\\n    </footer>\\n\\n    <script src=\"../js/qrcode.min.js\"></script>\\n    <script src=\"../js/qr_stub.js\"></script>\\n    <script src=\"./app.js\"></script>\\n  </body>\\n  </html>' to have property 'accepted'",
                "estack": "AssertionError: expected '<!doctype html>\\n<html lang=\"pt-BR\">\\n  <head>\\n    <meta charset=\"utf-8\" />\\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\" />\\n    <title>Gestor coletor • GestorEasy</title>\\n    <link rel=\"manifest\" href=\"./manifest.webmanifest\">\\n    <link rel=\"icon\" href=\"/assets/logo-light.png\" media=\"(prefers-color-scheme: light)\">\\n    <link rel=\"icon\" href=\"/assets/logo-dark.png\" media=\"(prefers-color-scheme: dark)\">\\n    <link rel=\"apple-touch-icon\" href=\"/assets/logo-light.png\">\\n    <link rel=\"stylesheet\" href=\"./style.css\" />\\n    <meta name=\"theme-color\" content=\"#0ea5e9\" />\\n  </head>\\n  <body>\\n    <header>\\n      <div class=\"brand\">\\n        <img src=\"/assets/logo-light.png\" alt=\"Gestor coletor\" height=\"28\" />\\n        <div>\\n          <h1>Gestor coletor</h1>\\n          <small>GestorEasy • PWA</small>\\n        </div>\\n      </div>\\n    </header>\\n    <main>\\n      <section id=\"pairing\" class=\"card\">\\n        <h2>Pareamento</h2>\\n        <p class=\"muted\">Aponte a câmera para o QR gerado no módulo WMS (Configurações) ou cole a string de pareamento.</p>\\n        <div class=\"grid2\">\\n          <div>\\n            <video id=\"camera\" playsinline muted></video>\\n            <div class=\"actions\">\\n              <button id=\"btnEnableCam\" class=\"btn\">Ativar câmera</button>\\n              <button id=\"btnScanPair\" class=\"btn btn-secondary\">Ler QR de pareamento</button>\\n              <span id=\"scanStatus\" class=\"muted\" aria-live=\"polite\"></span>\\n            </div>\\n          </div>\\n          <div>\\n            <label>String de pareamento\\n              <textarea id=\"pairString\" placeholder=\\'{\"url\":\"https://wms.local/mobile\",\"deviceKey\":\"DEV-ABC-123\"}\\' rows=\"3\"></textarea>\\n            </label>\\n            <div class=\"actions\">\\n              <button id=\"btnApplyPair\" class=\"btn\">Aplicar</button>\\n              <button id=\"btnTestPing\" class=\"btn btn-secondary\">Testar conexão</button>\\n            </div>\\n          </div>\\n        </div>\\n        <div class=\"status\">\\n          <div>URL: <span id=\"stUrl\" class=\"mono\">-</span></div>\\n          <div>Device Key: <span id=\"stDev\" class=\"mono\">-</span></div>\\n          <div>Última sincronização: <span id=\"stSync\" class=\"mono\">-</span></div>\\n        </div>\\n      </section>\\n\\n      <nav id=\"modes\">\\n        <button data-mode=\"inventory\" aria-selected=\"true\">Inventário</button>\\n        <button data-mode=\"receiving\">Recebimento</button>\\n        <button data-mode=\"shipping\">Expedição</button>\\n      </nav>\\n\\n      <section id=\"dashboard\" class=\"card\">\\n        <h2>Resumo do coletor</h2>\\n        <div class=\"grid2\">\\n          <div>\\n            <h3>Composição da fila</h3>\\n            <div id=\"queueBars\" class=\"bars\" aria-label=\"Composição da fila\" style=\"display:flex; gap:8px; align-items:center;\"></div>\\n            <small id=\"queueInfo\" class=\"muted\"></small>\\n          </div>\\n          <div>\\n            <h3>Última sincronização</h3>\\n            <div id=\"syncBars\" class=\"bars\" aria-label=\"Última sincronização\" style=\"display:flex; gap:8px; align-items:center;\"></div>\\n            <small id=\"syncInfo\" class=\"muted\"></small>\\n          </div>\\n        </div>\\n        <div class=\"grid2\" style=\"margin-top:8px;\">\\n          <div>\\n            <h3>Recebimento vs Meta (WMS)</h3>\\n            <div class=\"progress\" aria-label=\"Recebimento vs Meta\" style=\"height:12px; background:#eee; border-radius:6px; overflow:hidden; width:220px;\">\\n              <div id=\"goalRec\" style=\"height:12px; width:0%; background:#2b8a3e;\"></div>\\n            </div>\\n          </div>\\n          <div>\\n            <h3>Expedição vs Recebimento (WMS)</h3>\\n            <div class=\"progress\" aria-label=\"Expedição vs Recebimento\" style=\"height:12px; background:#eee; border-radius:6px; overflow:hidden; width:220px;\">\\n              <div id=\"goalShip\" style=\"height:12px; width:0%; background:#1c7ed6;\"></div>\\n            </div>\\n          </div>\\n        </div>\\n        <small id=\"goalsInfo\" class=\"muted\" style=\"display:block; margin-top:4px;\"></small>\\n        <div style=\"margin-top:8px;\">\\n          <h3>Capturas recentes</h3>\\n          <div id=\"queueChart\" style=\"display:flex; gap:6px; align-items:flex-end; height:120px;\"></div>\\n        </div>\\n      </section>\\n\\n      <section id=\"inventory\" class=\"card\">\\n        <h2>Inventário</h2>\\n        <div class=\"grid2\">\\n          <div>\\n            <label>Produto/ID\\n              <input id=\"invProduct\" type=\"text\" placeholder=\"Escaneie ou digite\" />\\n            </label>\\n            <label>Local/Bin\\n              <input id=\"invBin\" type=\"text\" placeholder=\"Ex.: A1-03-02\" />\\n            </label>\\n            <label>Quantidade\\n              <input id=\"invQty\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" />\\n            </label>\\n            <div class=\"actions\">\\n              <button id=\"invScan\" class=\"btn btn-secondary\">Usar câmera</button>\\n              <button id=\"invSubmit\" class=\"btn\">Registrar contagem</button>\\n            </div>\\n          </div>\\n          <div>\\n            <h3>Fila offline</h3>\\n            <ul id=\"queueInv\" class=\"list\"></ul>\\n          </div>\\n        </div>\\n      </section>\\n\\n      <section id=\"receiving\" class=\"card hidden\">\\n        <h2>Recebimento</h2>\\n        <label>Produto/ID\\n          <input id=\"recProduct\" type=\"text\" placeholder=\"Escaneie ou digite\" />\\n        </label>\\n        <label>Quantidade\\n          <input id=\"recQty\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" />\\n        </label>\\n        <label>Origem (doc/fornecedor)\\n          <input id=\"recOrigin\" type=\"text\" placeholder=\"NF/OC/Fornecedor\" />\\n        </label>\\n        <div class=\"actions\">\\n          <button id=\"recScan\" class=\"btn btn-secondary\">Usar câmera</button>\\n          <button id=\"recSubmit\" class=\"btn\">Registrar entrada</button>\\n        </div>\\n        <h3>Fila offline</h3>\\n        <ul id=\"queueRec\" class=\"list\"></ul>\\n      </section>\\n\\n      <section id=\"shipping\" class=\"card hidden\">\\n        <h2>Expedição</h2>\\n        <label>Produto/ID\\n          <input id=\"shipProduct\" type=\"text\" placeholder=\"Escaneie ou digite\" />\\n        </label>\\n        <label>Quantidade\\n          <input id=\"shipQty\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" />\\n        </label>\\n        <label>Destino (pedido/cliente)\\n          <input id=\"shipDest\" type=\"text\" placeholder=\"Pedido/Cliente\" />\\n        </label>\\n        <div class=\"actions\">\\n          <button id=\"shipScan\" class=\"btn btn-secondary\">Usar câmera</button>\\n          <button id=\"shipSubmit\" class=\"btn\">Registrar saída</button>\\n        </div>\\n        <h3>Fila offline</h3>\\n        <ul id=\"queueShip\" class=\"list\"></ul>\\n      </section>\\n\\n      <section class=\"card\">\\n        <div class=\"actions\">\\n          <button id=\"btnSync\" class=\"btn\">Sincronizar fila</button>\\n          <button id=\"btnClearQueue\" class=\"btn btn-secondary\">Limpar fila</button>\\n          <span id=\"syncFeedback\" class=\"muted\" aria-live=\"polite\"></span>\\n        </div>\\n      </section>\\n    </main>\\n    <footer>\\n      <small>© GestorEasy • PWA Coletor</small>\\n    </footer>\\n\\n    <script src=\"../js/qrcode.min.js\"></script>\\n    <script src=\"../js/qr_stub.js\"></script>\\n    <script src=\"./app.js\"></script>\\n  </body>\\n  </html>' to have property 'accepted'\n    at Context.eval (webpack://gestoreasy-v3/./cypress/e2e/mobile_pwa.cy.js:27:31)\n    at getRet (http://localhost:8000/__cypress/runner/cypress_runner.js:122341:20)\n    at tryCatcher (http://localhost:8000/__cypress/runner/cypress_runner.js:1777:23)\n    at Promise.attempt.Promise.try (http://localhost:8000/__cypress/runner/cypress_runner.js:4285:29)\n    at Context.thenFn (http://localhost:8000/__cypress/runner/cypress_runner.js:122352:66)\n    at Context.then (http://localhost:8000/__cypress/runner/cypress_runner.js:122603:21)",
                "diff": null
              },
              "uuid": "20679d26-1c22-47e8-bb5c-e035c646714b",
              "parentUUID": "968f19fa-7ba1-4150-b11f-07d3bd05e10a",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "envia evento de expedição e valida aceite do backend",
              "fullTitle": "Gestor coletor PWA envia evento de expedição e valida aceite do backend",
              "timedOut": null,
              "duration": 530,
              "state": "failed",
              "speed": null,
              "pass": false,
              "fail": true,
              "pending": false,
              "context": null,
              "code": "cy.request('POST', '/mobile/events', {\n  type: 'shipping',\n  payload: {\n    product: 'SKU-TEST-001',\n    qty: 1,\n    dest: 'CLIENT-X'\n  }\n}).then(res => {\n  expect([202, 200]).to.include(res.status);\n  expect(res.body).to.have.property('accepted', 1);\n});",
              "err": {
                "message": "AssertionError: expected '<!doctype html>\\n<html lang=\"pt-BR\">\\n  <head>\\n    <meta charset=\"utf-8\" />\\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\" />\\n    <title>Gestor coletor • GestorEasy</title>\\n    <link rel=\"manifest\" href=\"./manifest.webmanifest\">\\n    <link rel=\"icon\" href=\"/assets/logo-light.png\" media=\"(prefers-color-scheme: light)\">\\n    <link rel=\"icon\" href=\"/assets/logo-dark.png\" media=\"(prefers-color-scheme: dark)\">\\n    <link rel=\"apple-touch-icon\" href=\"/assets/logo-light.png\">\\n    <link rel=\"stylesheet\" href=\"./style.css\" />\\n    <meta name=\"theme-color\" content=\"#0ea5e9\" />\\n  </head>\\n  <body>\\n    <header>\\n      <div class=\"brand\">\\n        <img src=\"/assets/logo-light.png\" alt=\"Gestor coletor\" height=\"28\" />\\n        <div>\\n          <h1>Gestor coletor</h1>\\n          <small>GestorEasy • PWA</small>\\n        </div>\\n      </div>\\n    </header>\\n    <main>\\n      <section id=\"pairing\" class=\"card\">\\n        <h2>Pareamento</h2>\\n        <p class=\"muted\">Aponte a câmera para o QR gerado no módulo WMS (Configurações) ou cole a string de pareamento.</p>\\n        <div class=\"grid2\">\\n          <div>\\n            <video id=\"camera\" playsinline muted></video>\\n            <div class=\"actions\">\\n              <button id=\"btnEnableCam\" class=\"btn\">Ativar câmera</button>\\n              <button id=\"btnScanPair\" class=\"btn btn-secondary\">Ler QR de pareamento</button>\\n              <span id=\"scanStatus\" class=\"muted\" aria-live=\"polite\"></span>\\n            </div>\\n          </div>\\n          <div>\\n            <label>String de pareamento\\n              <textarea id=\"pairString\" placeholder=\\'{\"url\":\"https://wms.local/mobile\",\"deviceKey\":\"DEV-ABC-123\"}\\' rows=\"3\"></textarea>\\n            </label>\\n            <div class=\"actions\">\\n              <button id=\"btnApplyPair\" class=\"btn\">Aplicar</button>\\n              <button id=\"btnTestPing\" class=\"btn btn-secondary\">Testar conexão</button>\\n            </div>\\n          </div>\\n        </div>\\n        <div class=\"status\">\\n          <div>URL: <span id=\"stUrl\" class=\"mono\">-</span></div>\\n          <div>Device Key: <span id=\"stDev\" class=\"mono\">-</span></div>\\n          <div>Última sincronização: <span id=\"stSync\" class=\"mono\">-</span></div>\\n        </div>\\n      </section>\\n\\n      <nav id=\"modes\">\\n        <button data-mode=\"inventory\" aria-selected=\"true\">Inventário</button>\\n        <button data-mode=\"receiving\">Recebimento</button>\\n        <button data-mode=\"shipping\">Expedição</button>\\n      </nav>\\n\\n      <section id=\"dashboard\" class=\"card\">\\n        <h2>Resumo do coletor</h2>\\n        <div class=\"grid2\">\\n          <div>\\n            <h3>Composição da fila</h3>\\n            <div id=\"queueBars\" class=\"bars\" aria-label=\"Composição da fila\" style=\"display:flex; gap:8px; align-items:center;\"></div>\\n            <small id=\"queueInfo\" class=\"muted\"></small>\\n          </div>\\n          <div>\\n            <h3>Última sincronização</h3>\\n            <div id=\"syncBars\" class=\"bars\" aria-label=\"Última sincronização\" style=\"display:flex; gap:8px; align-items:center;\"></div>\\n            <small id=\"syncInfo\" class=\"muted\"></small>\\n          </div>\\n        </div>\\n        <div class=\"grid2\" style=\"margin-top:8px;\">\\n          <div>\\n            <h3>Recebimento vs Meta (WMS)</h3>\\n            <div class=\"progress\" aria-label=\"Recebimento vs Meta\" style=\"height:12px; background:#eee; border-radius:6px; overflow:hidden; width:220px;\">\\n              <div id=\"goalRec\" style=\"height:12px; width:0%; background:#2b8a3e;\"></div>\\n            </div>\\n          </div>\\n          <div>\\n            <h3>Expedição vs Recebimento (WMS)</h3>\\n            <div class=\"progress\" aria-label=\"Expedição vs Recebimento\" style=\"height:12px; background:#eee; border-radius:6px; overflow:hidden; width:220px;\">\\n              <div id=\"goalShip\" style=\"height:12px; width:0%; background:#1c7ed6;\"></div>\\n            </div>\\n          </div>\\n        </div>\\n        <small id=\"goalsInfo\" class=\"muted\" style=\"display:block; margin-top:4px;\"></small>\\n        <div style=\"margin-top:8px;\">\\n          <h3>Capturas recentes</h3>\\n          <div id=\"queueChart\" style=\"display:flex; gap:6px; align-items:flex-end; height:120px;\"></div>\\n        </div>\\n      </section>\\n\\n      <section id=\"inventory\" class=\"card\">\\n        <h2>Inventário</h2>\\n        <div class=\"grid2\">\\n          <div>\\n            <label>Produto/ID\\n              <input id=\"invProduct\" type=\"text\" placeholder=\"Escaneie ou digite\" />\\n            </label>\\n            <label>Local/Bin\\n              <input id=\"invBin\" type=\"text\" placeholder=\"Ex.: A1-03-02\" />\\n            </label>\\n            <label>Quantidade\\n              <input id=\"invQty\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" />\\n            </label>\\n            <div class=\"actions\">\\n              <button id=\"invScan\" class=\"btn btn-secondary\">Usar câmera</button>\\n              <button id=\"invSubmit\" class=\"btn\">Registrar contagem</button>\\n            </div>\\n          </div>\\n          <div>\\n            <h3>Fila offline</h3>\\n            <ul id=\"queueInv\" class=\"list\"></ul>\\n          </div>\\n        </div>\\n      </section>\\n\\n      <section id=\"receiving\" class=\"card hidden\">\\n        <h2>Recebimento</h2>\\n        <label>Produto/ID\\n          <input id=\"recProduct\" type=\"text\" placeholder=\"Escaneie ou digite\" />\\n        </label>\\n        <label>Quantidade\\n          <input id=\"recQty\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" />\\n        </label>\\n        <label>Origem (doc/fornecedor)\\n          <input id=\"recOrigin\" type=\"text\" placeholder=\"NF/OC/Fornecedor\" />\\n        </label>\\n        <div class=\"actions\">\\n          <button id=\"recScan\" class=\"btn btn-secondary\">Usar câmera</button>\\n          <button id=\"recSubmit\" class=\"btn\">Registrar entrada</button>\\n        </div>\\n        <h3>Fila offline</h3>\\n        <ul id=\"queueRec\" class=\"list\"></ul>\\n      </section>\\n\\n      <section id=\"shipping\" class=\"card hidden\">\\n        <h2>Expedição</h2>\\n        <label>Produto/ID\\n          <input id=\"shipProduct\" type=\"text\" placeholder=\"Escaneie ou digite\" />\\n        </label>\\n        <label>Quantidade\\n          <input id=\"shipQty\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" />\\n        </label>\\n        <label>Destino (pedido/cliente)\\n          <input id=\"shipDest\" type=\"text\" placeholder=\"Pedido/Cliente\" />\\n        </label>\\n        <div class=\"actions\">\\n          <button id=\"shipScan\" class=\"btn btn-secondary\">Usar câmera</button>\\n          <button id=\"shipSubmit\" class=\"btn\">Registrar saída</button>\\n        </div>\\n        <h3>Fila offline</h3>\\n        <ul id=\"queueShip\" class=\"list\"></ul>\\n      </section>\\n\\n      <section class=\"card\">\\n        <div class=\"actions\">\\n          <button id=\"btnSync\" class=\"btn\">Sincronizar fila</button>\\n          <button id=\"btnClearQueue\" class=\"btn btn-secondary\">Limpar fila</button>\\n          <span id=\"syncFeedback\" class=\"muted\" aria-live=\"polite\"></span>\\n        </div>\\n      </section>\\n    </main>\\n    <footer>\\n      <small>© GestorEasy • PWA Coletor</small>\\n    </footer>\\n\\n    <script src=\"../js/qrcode.min.js\"></script>\\n    <script src=\"../js/qr_stub.js\"></script>\\n    <script src=\"./app.js\"></script>\\n  </body>\\n  </html>' to have property 'accepted'",
                "estack": "AssertionError: expected '<!doctype html>\\n<html lang=\"pt-BR\">\\n  <head>\\n    <meta charset=\"utf-8\" />\\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\" />\\n    <title>Gestor coletor • GestorEasy</title>\\n    <link rel=\"manifest\" href=\"./manifest.webmanifest\">\\n    <link rel=\"icon\" href=\"/assets/logo-light.png\" media=\"(prefers-color-scheme: light)\">\\n    <link rel=\"icon\" href=\"/assets/logo-dark.png\" media=\"(prefers-color-scheme: dark)\">\\n    <link rel=\"apple-touch-icon\" href=\"/assets/logo-light.png\">\\n    <link rel=\"stylesheet\" href=\"./style.css\" />\\n    <meta name=\"theme-color\" content=\"#0ea5e9\" />\\n  </head>\\n  <body>\\n    <header>\\n      <div class=\"brand\">\\n        <img src=\"/assets/logo-light.png\" alt=\"Gestor coletor\" height=\"28\" />\\n        <div>\\n          <h1>Gestor coletor</h1>\\n          <small>GestorEasy • PWA</small>\\n        </div>\\n      </div>\\n    </header>\\n    <main>\\n      <section id=\"pairing\" class=\"card\">\\n        <h2>Pareamento</h2>\\n        <p class=\"muted\">Aponte a câmera para o QR gerado no módulo WMS (Configurações) ou cole a string de pareamento.</p>\\n        <div class=\"grid2\">\\n          <div>\\n            <video id=\"camera\" playsinline muted></video>\\n            <div class=\"actions\">\\n              <button id=\"btnEnableCam\" class=\"btn\">Ativar câmera</button>\\n              <button id=\"btnScanPair\" class=\"btn btn-secondary\">Ler QR de pareamento</button>\\n              <span id=\"scanStatus\" class=\"muted\" aria-live=\"polite\"></span>\\n            </div>\\n          </div>\\n          <div>\\n            <label>String de pareamento\\n              <textarea id=\"pairString\" placeholder=\\'{\"url\":\"https://wms.local/mobile\",\"deviceKey\":\"DEV-ABC-123\"}\\' rows=\"3\"></textarea>\\n            </label>\\n            <div class=\"actions\">\\n              <button id=\"btnApplyPair\" class=\"btn\">Aplicar</button>\\n              <button id=\"btnTestPing\" class=\"btn btn-secondary\">Testar conexão</button>\\n            </div>\\n          </div>\\n        </div>\\n        <div class=\"status\">\\n          <div>URL: <span id=\"stUrl\" class=\"mono\">-</span></div>\\n          <div>Device Key: <span id=\"stDev\" class=\"mono\">-</span></div>\\n          <div>Última sincronização: <span id=\"stSync\" class=\"mono\">-</span></div>\\n        </div>\\n      </section>\\n\\n      <nav id=\"modes\">\\n        <button data-mode=\"inventory\" aria-selected=\"true\">Inventário</button>\\n        <button data-mode=\"receiving\">Recebimento</button>\\n        <button data-mode=\"shipping\">Expedição</button>\\n      </nav>\\n\\n      <section id=\"dashboard\" class=\"card\">\\n        <h2>Resumo do coletor</h2>\\n        <div class=\"grid2\">\\n          <div>\\n            <h3>Composição da fila</h3>\\n            <div id=\"queueBars\" class=\"bars\" aria-label=\"Composição da fila\" style=\"display:flex; gap:8px; align-items:center;\"></div>\\n            <small id=\"queueInfo\" class=\"muted\"></small>\\n          </div>\\n          <div>\\n            <h3>Última sincronização</h3>\\n            <div id=\"syncBars\" class=\"bars\" aria-label=\"Última sincronização\" style=\"display:flex; gap:8px; align-items:center;\"></div>\\n            <small id=\"syncInfo\" class=\"muted\"></small>\\n          </div>\\n        </div>\\n        <div class=\"grid2\" style=\"margin-top:8px;\">\\n          <div>\\n            <h3>Recebimento vs Meta (WMS)</h3>\\n            <div class=\"progress\" aria-label=\"Recebimento vs Meta\" style=\"height:12px; background:#eee; border-radius:6px; overflow:hidden; width:220px;\">\\n              <div id=\"goalRec\" style=\"height:12px; width:0%; background:#2b8a3e;\"></div>\\n            </div>\\n          </div>\\n          <div>\\n            <h3>Expedição vs Recebimento (WMS)</h3>\\n            <div class=\"progress\" aria-label=\"Expedição vs Recebimento\" style=\"height:12px; background:#eee; border-radius:6px; overflow:hidden; width:220px;\">\\n              <div id=\"goalShip\" style=\"height:12px; width:0%; background:#1c7ed6;\"></div>\\n            </div>\\n          </div>\\n        </div>\\n        <small id=\"goalsInfo\" class=\"muted\" style=\"display:block; margin-top:4px;\"></small>\\n        <div style=\"margin-top:8px;\">\\n          <h3>Capturas recentes</h3>\\n          <div id=\"queueChart\" style=\"display:flex; gap:6px; align-items:flex-end; height:120px;\"></div>\\n        </div>\\n      </section>\\n\\n      <section id=\"inventory\" class=\"card\">\\n        <h2>Inventário</h2>\\n        <div class=\"grid2\">\\n          <div>\\n            <label>Produto/ID\\n              <input id=\"invProduct\" type=\"text\" placeholder=\"Escaneie ou digite\" />\\n            </label>\\n            <label>Local/Bin\\n              <input id=\"invBin\" type=\"text\" placeholder=\"Ex.: A1-03-02\" />\\n            </label>\\n            <label>Quantidade\\n              <input id=\"invQty\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" />\\n            </label>\\n            <div class=\"actions\">\\n              <button id=\"invScan\" class=\"btn btn-secondary\">Usar câmera</button>\\n              <button id=\"invSubmit\" class=\"btn\">Registrar contagem</button>\\n            </div>\\n          </div>\\n          <div>\\n            <h3>Fila offline</h3>\\n            <ul id=\"queueInv\" class=\"list\"></ul>\\n          </div>\\n        </div>\\n      </section>\\n\\n      <section id=\"receiving\" class=\"card hidden\">\\n        <h2>Recebimento</h2>\\n        <label>Produto/ID\\n          <input id=\"recProduct\" type=\"text\" placeholder=\"Escaneie ou digite\" />\\n        </label>\\n        <label>Quantidade\\n          <input id=\"recQty\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" />\\n        </label>\\n        <label>Origem (doc/fornecedor)\\n          <input id=\"recOrigin\" type=\"text\" placeholder=\"NF/OC/Fornecedor\" />\\n        </label>\\n        <div class=\"actions\">\\n          <button id=\"recScan\" class=\"btn btn-secondary\">Usar câmera</button>\\n          <button id=\"recSubmit\" class=\"btn\">Registrar entrada</button>\\n        </div>\\n        <h3>Fila offline</h3>\\n        <ul id=\"queueRec\" class=\"list\"></ul>\\n      </section>\\n\\n      <section id=\"shipping\" class=\"card hidden\">\\n        <h2>Expedição</h2>\\n        <label>Produto/ID\\n          <input id=\"shipProduct\" type=\"text\" placeholder=\"Escaneie ou digite\" />\\n        </label>\\n        <label>Quantidade\\n          <input id=\"shipQty\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" />\\n        </label>\\n        <label>Destino (pedido/cliente)\\n          <input id=\"shipDest\" type=\"text\" placeholder=\"Pedido/Cliente\" />\\n        </label>\\n        <div class=\"actions\">\\n          <button id=\"shipScan\" class=\"btn btn-secondary\">Usar câmera</button>\\n          <button id=\"shipSubmit\" class=\"btn\">Registrar saída</button>\\n        </div>\\n        <h3>Fila offline</h3>\\n        <ul id=\"queueShip\" class=\"list\"></ul>\\n      </section>\\n\\n      <section class=\"card\">\\n        <div class=\"actions\">\\n          <button id=\"btnSync\" class=\"btn\">Sincronizar fila</button>\\n          <button id=\"btnClearQueue\" class=\"btn btn-secondary\">Limpar fila</button>\\n          <span id=\"syncFeedback\" class=\"muted\" aria-live=\"polite\"></span>\\n        </div>\\n      </section>\\n    </main>\\n    <footer>\\n      <small>© GestorEasy • PWA Coletor</small>\\n    </footer>\\n\\n    <script src=\"../js/qrcode.min.js\"></script>\\n    <script src=\"../js/qr_stub.js\"></script>\\n    <script src=\"./app.js\"></script>\\n  </body>\\n  </html>' to have property 'accepted'\n    at Context.eval (webpack://gestoreasy-v3/./cypress/e2e/mobile_pwa.cy.js:37:31)\n    at getRet (http://localhost:8000/__cypress/runner/cypress_runner.js:122341:20)\n    at tryCatcher (http://localhost:8000/__cypress/runner/cypress_runner.js:1777:23)\n    at Promise.attempt.Promise.try (http://localhost:8000/__cypress/runner/cypress_runner.js:4285:29)\n    at Context.thenFn (http://localhost:8000/__cypress/runner/cypress_runner.js:122352:66)\n    at Context.then (http://localhost:8000/__cypress/runner/cypress_runner.js:122603:21)",
                "diff": null
              },
              "uuid": "c118fe0f-ca1e-4619-81b0-3fe1f0afccc9",
              "parentUUID": "968f19fa-7ba1-4150-b11f-07d3bd05e10a",
              "isHook": false,
              "skipped": false
            },
            {
              "title": "consulta relatório CSV de entradas de inventário",
              "fullTitle": "Gestor coletor PWA consulta relatório CSV de entradas de inventário",
              "timedOut": null,
              "duration": 367,
              "state": "failed",
              "speed": null,
              "pass": false,
              "fail": true,
              "pending": false,
              "context": null,
              "code": "cy.request('/api/wms/inventory/entries/export.csv').then(res => {\n  expect(res.status).to.eq(200);\n  expect(res.headers['content-type']).to.contain('text/csv');\n  expect(res.body).to.be.a('string');\n});",
              "err": {
                "message": "CypressError: `cy.request()` failed on:\n\nhttp://localhost:8000/api/wms/inventory/entries/export.csv\n\nThe response we received from your web server was:\n\n  > 404: Not Found\n\nThis was considered a failure because the status code was not `2xx` or `3xx`.\n\nIf you do not want status codes to cause failures pass the option: `failOnStatusCode: false`\n\n-----------------------------------------------------------\n\nThe request we sent was:\n\nMethod: GET\nURL: http://localhost:8000/api/wms/inventory/entries/export.csv\nHeaders: {\n  \"Connection\": \"keep-alive\",\n  \"user-agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Cypress/15.6.0 Chrome/138.0.7204.251 Electron/37.6.0 Safari/537.36\",\n  \"accept\": \"*/*\",\n  \"accept-encoding\": \"gzip, deflate\"\n}\n\n-----------------------------------------------------------\n\nThe response we got was:\n\nStatus: 404 - Not Found\nHeaders: {\n  \"host\": \"localhost:8000\",\n  \"date\": \"Fri, 07 Nov 2025 10:21:19 GMT\",\n  \"connection\": \"close\",\n  \"content-type\": \"text/html; charset=UTF-8\",\n  \"content-length\": \"569\"\n}\nBody: <!doctype html><html><head><title>404 Not Found</title><style>\nbody { background-color: #fcfcfc; color: #333333; margin: 0; padding:0; }\nh1 { font-size: 1.5em; font-weight: normal; background-color: #9999cc; min-height:2em; line-height:2em; border-bottom: 1px inset black; margin: 0; }\nh1, p { padding-left: 10px; }\ncode.url { background-color: #eeeeee; font-family:monospace; padding:0 2px;}\n</style>\n</head><body><h1>Not Found</h1><p>The requested resource <code class=\"url\">/api/wms/inventory/entries/export.csv</code> was not found on this server.</p></body></html>\n\n\nhttps://on.cypress.io/request",
                "estack": "CypressError: `cy.request()` failed on:\n\nhttp://localhost:8000/api/wms/inventory/entries/export.csv\n\nThe response we received from your web server was:\n\n  > 404: Not Found\n\nThis was considered a failure because the status code was not `2xx` or `3xx`.\n\nIf you do not want status codes to cause failures pass the option: `failOnStatusCode: false`\n\n-----------------------------------------------------------\n\nThe request we sent was:\n\nMethod: GET\nURL: http://localhost:8000/api/wms/inventory/entries/export.csv\nHeaders: {\n  \"Connection\": \"keep-alive\",\n  \"user-agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Cypress/15.6.0 Chrome/138.0.7204.251 Electron/37.6.0 Safari/537.36\",\n  \"accept\": \"*/*\",\n  \"accept-encoding\": \"gzip, deflate\"\n}\n\n-----------------------------------------------------------\n\nThe response we got was:\n\nStatus: 404 - Not Found\nHeaders: {\n  \"host\": \"localhost:8000\",\n  \"date\": \"Fri, 07 Nov 2025 10:21:19 GMT\",\n  \"connection\": \"close\",\n  \"content-type\": \"text/html; charset=UTF-8\",\n  \"content-length\": \"569\"\n}\nBody: <!doctype html><html><head><title>404 Not Found</title><style>\nbody { background-color: #fcfcfc; color: #333333; margin: 0; padding:0; }\nh1 { font-size: 1.5em; font-weight: normal; background-color: #9999cc; min-height:2em; line-height:2em; border-bottom: 1px inset black; margin: 0; }\nh1, p { padding-left: 10px; }\ncode.url { background-color: #eeeeee; font-family:monospace; padding:0 2px;}\n</style>\n</head><body><h1>Not Found</h1><p>The requested resource <code class=\"url\">/api/wms/inventory/entries/export.csv</code> was not found on this server.</p></body></html>\n\n\nhttps://on.cypress.io/request\n    at <unknown> (http://localhost:8000/__cypress/runner/cypress_runner.js:135785:72)\n    at tryCatcher (http://localhost:8000/__cypress/runner/cypress_runner.js:1777:23)\n    at Promise._settlePromiseFromHandler (http://localhost:8000/__cypress/runner/cypress_runner.js:1489:31)\n    at Promise._settlePromise (http://localhost:8000/__cypress/runner/cypress_runner.js:1546:18)\n    at Promise._settlePromise0 (http://localhost:8000/__cypress/runner/cypress_runner.js:1591:10)\n    at Promise._settlePromises (http://localhost:8000/__cypress/runner/cypress_runner.js:1671:18)\n    at _drainQueueStep (http://localhost:8000/__cypress/runner/cypress_runner.js:2377:12)\n    at _drainQueue (http://localhost:8000/__cypress/runner/cypress_runner.js:2370:9)\n    at Async._drainQueues (http://localhost:8000/__cypress/runner/cypress_runner.js:2386:5)\n    at Async.drainQueues (http://localhost:8000/__cypress/runner/cypress_runner.js:2256:14)\nFrom Your Spec Code:\n    at Context.eval (webpack://gestoreasy-v3/./cypress/e2e/mobile_pwa.cy.js:42:7)",
                "diff": null
              },
              "uuid": "215d91c8-ccff-42ee-bf16-5d3605eb390d",
              "parentUUID": "968f19fa-7ba1-4150-b11f-07d3bd05e10a",
              "isHook": false,
              "skipped": false
            }
          ],
          "suites": [],
          "passes": [],
          "failures": [
            "f270aa00-b362-403d-8afb-11779830d8b8",
            "b3201d8e-c1f2-442b-ae25-22a1894b1856",
            "20679d26-1c22-47e8-bb5c-e035c646714b",
            "c118fe0f-ca1e-4619-81b0-3fe1f0afccc9",
            "215d91c8-ccff-42ee-bf16-5d3605eb390d"
          ],
          "pending": [],
          "skipped": [],
          "duration": 6213,
          "root": false,
          "rootEmpty": false,
          "_timeout": 2000
        }
      ],
      "passes": [],
      "failures": [],
      "pending": [],
      "skipped": [],
      "duration": 0,
      "root": true,
      "rootEmpty": true,
      "_timeout": 2000
    }
  ],
  "meta": {
    "mocha": {
      "version": "7.2.0"
    },
    "mochawesome": {
      "options": {
        "quiet": true,
        "reportFilename": "mochawesome",
        "saveHtml": true,
        "saveJson": true,
        "consoleReporter": "spec",
        "useInlineDiffs": false,
        "code": true
      },
      "version": "7.1.4"
    },
    "marge": {
      "options": {
        "id": "default",
        "reportDir": "cypress/reports/mochawesome",
        "overwrite": false,
        "html": true,
        "json": true,
        "quiet": true
      },
      "version": "6.3.2"
    }
  }
}