describe('Gestor coletor PWA', () => {
  it('carrega e testa ping com dispositivo válido', () => {
    cy.visit('/mobile/');
    cy.contains('Gestor coletor');
    cy.window().then(win => {
      win.localStorage.setItem('collectorCfg', JSON.stringify({ url: 'http://localhost:8001/mobile', deviceKey: 'DEV-ABC-123' }));
    });
    cy.get('#btnTestPing').click();
    cy.get('#scanStatus').should('contain', 'Conexão OK');
  });

  it('registra item de inventário na fila e sincroniza', () => {
    cy.get('#invProduct').type('SKU-TEST-001');
    cy.get('#invQty').type('2');
    cy.get('#invSubmit').click();
    cy.get('#queueInv').should('not.be.empty');
    cy.get('#btnSync').click();
    cy.get('#syncFeedback').should('contain', 'Sincronizado').or('contain', 'OK');
  });

  it('envia evento de recebimento e valida aceite do backend', () => {
    cy.request('POST', '/mobile/events', {
      type: 'receiving',
      payload: { product: 'SKU-TEST-001', qty: 3, origin: 'DOC-A' },
    }).then(res => {
      expect([202,200]).to.include(res.status);
      expect(res.body).to.have.property('accepted', 1);
    });
  });

  it('envia evento de expedição e valida aceite do backend', () => {
    cy.request('POST', '/mobile/events', {
      type: 'shipping',
      payload: { product: 'SKU-TEST-001', qty: 1, dest: 'CLIENT-X' },
    }).then(res => {
      expect([202,200]).to.include(res.status);
      expect(res.body).to.have.property('accepted', 1);
    });
  });

  it('consulta relatório CSV de entradas de inventário', () => {
    cy.request('/api/wms/inventory/entries/export.csv').then(res => {
      expect(res.status).to.eq(200);
      expect(res.headers['content-type']).to.contain('text/csv');
      expect(res.body).to.be.a('string');
    });
  });
});