{
 "slug": "abrantes",
 "entidade": "Câmara Municipal de Abrantes",
 "concelho": "Abrantes",
 "distrito": "Santarém",
 "urlLista": "http://www.cm-abrantes.pt",
 "metodo": "2026-09.1",
 "medidoEm": "2026-09-26T18:45:37.374Z",
 "ua": "Chrome/150.0.0.0 (Windows)",
 "tentativas": 9,
 "capturaInicial": "provas/abrantes/inicial.jpg",
 "inicial": {
  "urlPedido": "https://www.cm-abrantes.pt/",
  "urlFinal": "https://www.cm-abrantes.pt/",
  "estado": 200,
  "titulo": "Câmara Municipal de Abrantes",
  "elementos": 38,
  "protocolo": "https:",
  "avisos": [
   "só 38 elementos no DOM"
  ]
 },
 "medivel": true,
 "tecnologia": "Flutter (canvas)",
 "flutter": true,
 "semantica": {
  "antes": 0,
  "depois": 10,
  "comoSeLigou": "Com a página aberta, o foco começa em flutter-view; à 3.ª tecla Tab chega-se ao botão escondido «Enable accessibility» (flt-semantics-placeholder, 1×1 px, fora do ecrã, sem nada visível). Enter nesse botão liga a árvore de semântica.",
  "tabsAteAoBotao": 3,
  "placeholder": "<flt-semantics-placeholder role=\"button\" aria-live=\"polite\" tabindex=\"0\" aria-label=\"Enable accessibility\" style=\"position: absolute; left: -1px; top: -1px; width: 1px; height: 1px;\"></flt-semantics-placeholder>",
  "leitorDeEcra": "Sem a árvore de semântica ligada, a árvore de acessibilidade do browser só tem o botão «Enable accessibility» (em inglês) e uma área vazia: o resto do site não existe para um leitor de ecrã. Um utilizador de leitor de ecrã chega lá sem ajuda se encontrar esse botão (3 teclas Tab, ou na lista de botões do leitor) e perceber o rótulo em inglês; ao activá-lo, o site aparece. Não medimos se o Flutter liga a semântica sozinho quando detecta um leitor de ecrã.",
  "dialogoInicial": "A inicial abre com uma janela «Interdição do trânsito na via que liga Carvalhal a Sobral BastoVer mais» por cima do conteúdo; fechou-se com Escape."
 },
 "rgpd": {
  "legal": {
   "cookies": {
    "total": 0,
    "identificadoresAntesDoConsentimento": [],
    "suspeitos": [],
    "funcionais": 0,
    "contaminacaoProvavel": null,
    "veredicto": "conforme",
    "certeza": "medido",
    "fonte": "Lei 41/2004, art. 5.º/1: armazenar ou aceder a informação no equipamento terminal só com consentimento PRÉVIO e informação clara e completa; art. 5.º/2 isenta o estritamente técnico. Violação = contraordenação do art. 14.º/1 e): pessoa singular 1 500-25 000€, pessoa colectiva 5 000-5 000 000€. Instauração, instrução e aplicação da coima competem à CNPD (art. 15.º/1); fiscalização repartida com a ANACOM (art. 13.º-G)"
   },
   "banner": {
    "presente": false,
    "texto": null,
    "botoes": [],
    "temAceitar": false,
    "temRecusar": false,
    "temDefinicoes": false,
    "fonte": "árvore de semântica do Flutter, área visível, antes de qualquer clique"
   },
   "politicas": {
    "privacidade": null,
    "cookies": null,
    "termos": null,
    "veredicto": "falha",
    "certeza": "indicativo"
   },
   "perfil": {
    "plataformas": [],
    "cmp": [],
    "plataformaDeRisco": false,
    "googleFonts": true
   }
  },
  "trackers": [],
  "pedidosTotal": 35,
  "prova": {
   "rede": "provas/abrantes/rede-inicial.json",
   "captura": "provas/abrantes/inicial.jpg"
  }
 },
 "paginas": [
  {
   "url": "https://www.cm-abrantes.pt/",
   "valida": true,
   "arvore": {
    "nos": 92,
    "imagens": 6,
    "botoesSemNome": 9
   },
   "a11y": {
    "viewport": {
     "conteudo": "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no",
     "html": "<meta flt-viewport=\"\" name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">",
     "quantos": 1,
     "zoomBloqueado": true
    },
    "lang": {
     "valor": "pt",
     "xmlLang": null,
     "valido": true,
     "html": "<html lang=\"pt\">"
    },
    "imagens": {
     "semAlt": 4,
     "total": 6,
     "exemplos": [
      {
       "html": "<flt-semantics-img role=\"img\" style=\"position: absolute; top: 0px; left: 0px; width: 1366px; height: 683px; font-size: 6px;\">",
       "caixa": {
        "x": 0,
        "y": 0,
        "w": 1366,
        "h": 683
       },
       "prova": "provas/abrantes/alt-p0.png"
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-65\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 59,
        "y": 3879,
        "w": 20,
        "h": 20
       }
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-67\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 104,
        "y": 3879,
        "w": 20,
        "h": 20
       }
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-69\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 149,
        "y": 3879,
        "w": 20,
        "h": 20
       }
      }
     ]
    },
    "campos": {
     "semNome": 0,
     "soPlaceholder": 0,
     "vistos": 0,
     "exemplos": []
    },
    "contraste": [],
    "fonte": "árvore de semântica do Flutter e DOM real (lang e viewport)"
   },
   "seg": {
    "geradores": [
     {
      "conteudo": "Flutter",
      "html": "<meta name=\"generator\" content=\"Flutter\">"
     }
    ],
    "cspMeta": [],
    "bibliotecas": [],
    "ficheiros": [],
    "jqScripts": [],
    "misto": [],
    "formsHttp": [],
    "plataforma": null,
    "protocolo": "https:"
   },
   "papel": "inicial",
   "estado": 200
  },
  {
   "url": "https://www.cm-abrantes.pt/#/municipio",
   "valida": true,
   "arvore": {
    "nos": 65,
    "imagens": 5,
    "botoesSemNome": 3
   },
   "a11y": {
    "viewport": {
     "conteudo": "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no",
     "html": "<meta flt-viewport=\"\" name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">",
     "quantos": 1,
     "zoomBloqueado": true
    },
    "lang": {
     "valor": "pt",
     "xmlLang": null,
     "valido": true,
     "html": "<html lang=\"pt\">"
    },
    "imagens": {
     "semAlt": 4,
     "total": 5,
     "exemplos": [
      {
       "html": "<flt-semantics-img role=\"img\" style=\"position: absolute; top: 0px; left: 0px; width: 1366px; height: 319.906px; font-size: 6px;\">",
       "caixa": {
        "x": 0,
        "y": 143,
        "w": 1366,
        "h": 320
       },
       "prova": "provas/abrantes/alt-p1.png"
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-123\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 59,
        "y": 1045,
        "w": 20,
        "h": 20
       }
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-125\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 104,
        "y": 1045,
        "w": 20,
        "h": 20
       }
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-127\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 149,
        "y": 1045,
        "w": 20,
        "h": 20
       }
      }
     ]
    },
    "campos": {
     "semNome": 0,
     "soPlaceholder": 0,
     "vistos": 0,
     "exemplos": []
    },
    "contraste": [],
    "fonte": "árvore de semântica do Flutter e DOM real (lang e viewport)"
   },
   "seg": {
    "geradores": [
     {
      "conteudo": "Flutter",
      "html": "<meta name=\"generator\" content=\"Flutter\">"
     }
    ],
    "cspMeta": [],
    "bibliotecas": [],
    "ficheiros": [],
    "jqScripts": [],
    "misto": [],
    "formsHttp": [],
    "plataforma": null,
    "protocolo": "https:"
   },
   "papel": "menu",
   "textoLigacao": "MUNICÍPIO",
   "estado": 200
  },
  {
   "url": "https://www.cm-abrantes.pt/#/investir",
   "valida": true,
   "arvore": {
    "nos": 64,
    "imagens": 5,
    "botoesSemNome": 3
   },
   "a11y": {
    "viewport": {
     "conteudo": "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no",
     "html": "<meta flt-viewport=\"\" name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">",
     "quantos": 1,
     "zoomBloqueado": true
    },
    "lang": {
     "valor": "pt",
     "xmlLang": null,
     "valido": true,
     "html": "<html lang=\"pt\">"
    },
    "imagens": {
     "semAlt": 4,
     "total": 5,
     "exemplos": [
      {
       "html": "<flt-semantics-img role=\"img\" style=\"position: absolute; top: 0px; left: 0px; width: 1366px; height: 319.906px; font-size: 6px;\">",
       "caixa": {
        "x": 0,
        "y": 143,
        "w": 1366,
        "h": 320
       },
       "prova": "provas/abrantes/alt-p2.png"
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-249\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 59,
        "y": 1045,
        "w": 20,
        "h": 20
       }
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-251\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 104,
        "y": 1045,
        "w": 20,
        "h": 20
       }
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-253\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 149,
        "y": 1045,
        "w": 20,
        "h": 20
       }
      }
     ]
    },
    "campos": {
     "semNome": 0,
     "soPlaceholder": 0,
     "vistos": 0,
     "exemplos": []
    },
    "contraste": [],
    "fonte": "árvore de semântica do Flutter e DOM real (lang e viewport)"
   },
   "seg": {
    "geradores": [
     {
      "conteudo": "Flutter",
      "html": "<meta name=\"generator\" content=\"Flutter\">"
     }
    ],
    "cspMeta": [],
    "bibliotecas": [],
    "ficheiros": [],
    "jqScripts": [],
    "misto": [],
    "formsHttp": [],
    "plataforma": null,
    "protocolo": "https:"
   },
   "papel": "menu",
   "textoLigacao": "INVESTIR",
   "estado": 200
  },
  {
   "url": "https://www.cm-abrantes.pt/#/viver",
   "valida": true,
   "arvore": {
    "nos": 81,
    "imagens": 5,
    "botoesSemNome": 3
   },
   "a11y": {
    "viewport": {
     "conteudo": "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no",
     "html": "<meta flt-viewport=\"\" name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">",
     "quantos": 1,
     "zoomBloqueado": true
    },
    "lang": {
     "valor": "pt",
     "xmlLang": null,
     "valido": true,
     "html": "<html lang=\"pt\">"
    },
    "imagens": {
     "semAlt": 4,
     "total": 5,
     "exemplos": [
      {
       "html": "<flt-semantics-img role=\"img\" style=\"position: absolute; top: 0px; left: 0px; width: 1366px; height: 319.906px; font-size: 6px;\">",
       "caixa": {
        "x": 0,
        "y": 143,
        "w": 1366,
        "h": 320
       },
       "prova": "provas/abrantes/alt-p3.png"
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-395\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 59,
        "y": 1045,
        "w": 20,
        "h": 20
       }
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-397\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 104,
        "y": 1045,
        "w": 20,
        "h": 20
       }
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-399\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 149,
        "y": 1045,
        "w": 20,
        "h": 20
       }
      }
     ]
    },
    "campos": {
     "semNome": 0,
     "soPlaceholder": 0,
     "vistos": 0,
     "exemplos": []
    },
    "contraste": [],
    "fonte": "árvore de semântica do Flutter e DOM real (lang e viewport)"
   },
   "seg": {
    "geradores": [
     {
      "conteudo": "Flutter",
      "html": "<meta name=\"generator\" content=\"Flutter\">"
     }
    ],
    "cspMeta": [],
    "bibliotecas": [],
    "ficheiros": [],
    "jqScripts": [],
    "misto": [],
    "formsHttp": [],
    "plataforma": null,
    "protocolo": "https:"
   },
   "papel": "menu",
   "textoLigacao": "VIVER",
   "estado": 200
  },
  {
   "url": "https://www.cm-abrantes.pt/#/abrantes-digital",
   "valida": true,
   "arvore": {
    "nos": 66,
    "imagens": 5,
    "botoesSemNome": 3
   },
   "a11y": {
    "viewport": {
     "conteudo": "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no",
     "html": "<meta flt-viewport=\"\" name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">",
     "quantos": 1,
     "zoomBloqueado": true
    },
    "lang": {
     "valor": "pt",
     "xmlLang": null,
     "valido": true,
     "html": "<html lang=\"pt\">"
    },
    "imagens": {
     "semAlt": 4,
     "total": 5,
     "exemplos": [
      {
       "html": "<flt-semantics-img role=\"img\" style=\"position: absolute; top: 0px; left: 0px; width: 1366px; height: 319.906px; font-size: 6px;\">",
       "caixa": {
        "x": 0,
        "y": 143,
        "w": 1366,
        "h": 320
       },
       "prova": "provas/abrantes/alt-p4.png"
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-535\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 59,
        "y": 1045,
        "w": 20,
        "h": 20
       }
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-537\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 104,
        "y": 1045,
        "w": 20,
        "h": 20
       }
      },
      {
       "html": "<flt-semantics id=\"flt-semantic-node-539\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
       "caixa": {
        "x": 149,
        "y": 1045,
        "w": 20,
        "h": 20
       }
      }
     ]
    },
    "campos": {
     "semNome": 0,
     "soPlaceholder": 0,
     "vistos": 0,
     "exemplos": []
    },
    "contraste": [],
    "fonte": "árvore de semântica do Flutter e DOM real (lang e viewport)"
   },
   "seg": {
    "geradores": [
     {
      "conteudo": "Flutter",
      "html": "<meta name=\"generator\" content=\"Flutter\">"
     }
    ],
    "cspMeta": [],
    "bibliotecas": [],
    "ficheiros": [],
    "jqScripts": [],
    "misto": [],
    "formsHttp": [],
    "plataforma": null,
    "protocolo": "https:"
   },
   "papel": "menu",
   "textoLigacao": "ABRANTES DIGITAL",
   "estado": 200
  }
 ],
 "amostra": {
  "regra": "inicial + 4 primeiras secções do menu principal da aplicação (o menu abre-se no botão «Mostrar menu»; cada secção tem endereço próprio, com rota depois de #)",
  "menu": {
   "origem": "árvore de semântica do Flutter, menu aberto",
   "elemento": "MUNICÍPIO | INVESTIR | VIVER | ABRANTES DIGITAL | COMUNICAÇÃO | SERVIÇOS | CONTACTOS"
  },
  "descartadas": []
 },
 "declaracao": {
  "encontrada": false,
  "tentativas": [
   {
    "url": "https://www.cm-abrantes.pt/#/acessibilidade",
    "via": "caminho-habitual",
    "estado": null,
    "final": "https://www.cm-abrantes.pt/#/acessibilidade",
    "sinais": []
   },
   {
    "url": "https://www.cm-abrantes.pt/#/declaracao-de-acessibilidade",
    "via": "caminho-habitual",
    "estado": null,
    "final": "https://www.cm-abrantes.pt/#/declaracao-de-acessibilidade",
    "sinais": []
   },
   {
    "url": "https://www.cm-abrantes.pt/acessibilidade",
    "via": "caminho-habitual",
    "estado": 404,
    "final": "https://www.cm-abrantes.pt/acessibilidade",
    "sinais": []
   },
   {
    "url": "https://www.cm-abrantes.pt/declaracao-de-acessibilidade",
    "via": "caminho-habitual",
    "estado": 404,
    "final": "https://www.cm-abrantes.pt/declaracao-de-acessibilidade",
    "sinais": []
   }
  ]
 },
 "legais": {
  "privacidade": [
   {
    "texto": "Política de Privacidade",
    "url": "https://pp.cm-abrantes.pt/",
    "tipo": "botão (a aplicação não usa ligações <a>)"
   }
  ],
  "declaracao": []
 },
 "selo": {
  "estado": "semSinal",
  "nivel": null,
  "certificadoEm": null,
  "podeDizerTem": false,
  "frase": null
 },
 "seguranca": {
  "cabecalhos": {
   "hsts": {
    "valor": null,
    "maxAge": 0,
    "ok": false
   },
   "csp": {
    "valor": null,
    "meta": [],
    "ok": false
   },
   "antiEnquadramento": {
    "xFrameOptions": null,
    "frameAncestors": false,
    "ok": false
   },
   "nosniff": {
    "valor": null,
    "ok": false
   },
   "referrerPolicy": {
    "valor": null,
    "ok": false
   },
   "versoesServidor": {
    "server": null,
    "xPoweredBy": null,
    "aspnet": null,
    "expoe": []
   }
  },
  "redireccionamento": {
   "saltos": [
    {
     "url": "http://www.cm-abrantes.pt/",
     "erro": "ECONNRESET"
    }
   ],
   "resultado": "sem-resposta-http",
   "final": null
  },
  "tls": {
   "moderno": {
    "aceita": true,
    "versao": "TLSv1.3"
   },
   "tls10": {
    "aceita": false,
    "erro": "ERR_SSL_TLSV1_ALERT_PROTOCOL_VERSION"
   },
   "tls11": {
    "aceita": false,
    "erro": "ERR_SSL_TLSV1_ALERT_PROTOCOL_VERSION"
   },
   "veredicto": "sim"
  },
  "readme": null,
  "plataforma": "Flutter",
  "prova": {
   "cabecalhos": "provas/abrantes/cabecalhos-inicial.json"
  }
 },
 "notaMetodo": "Site feito em Flutter e desenhado num canvas: o HTML não tem o conteúdo. RGPD e Segurança medem-se como nos outros sites (rede, cookies e cabeçalhos, antes de qualquer clique). Na Acessibilidade liga-se a árvore de semântica do Flutter (Tab e Enter no botão «Enable accessibility») e leem-se sobre ela as imagens e os campos; língua e zoom leem-se no HTML real. O contraste não é medível, porque o texto não tem cores calculadas. A amostra são as secções do menu da aplicação, cada uma com o seu endereço.",
 "criterios": {
  "acessibilidade": {
   "zoom": {
    "valor": "nao",
    "prova": {
     "pagina": "https://www.cm-abrantes.pt/",
     "html": "<meta flt-viewport=\"\" name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">"
    },
    "nota": null
   },
   "lang": {
    "valor": "sim",
    "prova": {
     "html": "<html lang=\"pt\">"
    },
    "nota": null
   },
   "alt": {
    "valor": "nao",
    "prova": {
     "paginas": [
      {
       "url": "https://www.cm-abrantes.pt/",
       "n": 4,
       "exemplos": [
        {
         "html": "<flt-semantics-img role=\"img\" style=\"position: absolute; top: 0px; left: 0px; width: 1366px; height: 683px; font-size: 6px;\">",
         "caixa": {
          "x": 0,
          "y": 0,
          "w": 1366,
          "h": 683
         },
         "prova": "provas/abrantes/alt-p0.png"
        },
        {
         "html": "<flt-semantics id=\"flt-semantic-node-65\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
         "caixa": {
          "x": 59,
          "y": 3879,
          "w": 20,
          "h": 20
         }
        },
        {
         "html": "<flt-semantics id=\"flt-semantic-node-67\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
         "caixa": {
          "x": 104,
          "y": 3879,
          "w": 20,
          "h": 20
         }
        }
       ]
      },
      {
       "url": "https://www.cm-abrantes.pt/#/municipio",
       "n": 4,
       "exemplos": [
        {
         "html": "<flt-semantics-img role=\"img\" style=\"position: absolute; top: 0px; left: 0px; width: 1366px; height: 319.906px; font-size: 6px;\">",
         "caixa": {
          "x": 0,
          "y": 143,
          "w": 1366,
          "h": 320
         },
         "prova": "provas/abrantes/alt-p1.png"
        },
        {
         "html": "<flt-semantics id=\"flt-semantic-node-123\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
         "caixa": {
          "x": 59,
          "y": 1045,
          "w": 20,
          "h": 20
         }
        },
        {
         "html": "<flt-semantics id=\"flt-semantic-node-125\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
         "caixa": {
          "x": 104,
          "y": 1045,
          "w": 20,
          "h": 20
         }
        }
       ]
      },
      {
       "url": "https://www.cm-abrantes.pt/#/investir",
       "n": 4,
       "exemplos": [
        {
         "html": "<flt-semantics-img role=\"img\" style=\"position: absolute; top: 0px; left: 0px; width: 1366px; height: 319.906px; font-size: 6px;\">",
         "caixa": {
          "x": 0,
          "y": 143,
          "w": 1366,
          "h": 320
         },
         "prova": "provas/abrantes/alt-p2.png"
        },
        {
         "html": "<flt-semantics id=\"flt-semantic-node-249\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
         "caixa": {
          "x": 59,
          "y": 1045,
          "w": 20,
          "h": 20
         }
        },
        {
         "html": "<flt-semantics id=\"flt-semantic-node-251\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
         "caixa": {
          "x": 104,
          "y": 1045,
          "w": 20,
          "h": 20
         }
        }
       ]
      },
      {
       "url": "https://www.cm-abrantes.pt/#/viver",
       "n": 4,
       "exemplos": [
        {
         "html": "<flt-semantics-img role=\"img\" style=\"position: absolute; top: 0px; left: 0px; width: 1366px; height: 319.906px; font-size: 6px;\">",
         "caixa": {
          "x": 0,
          "y": 143,
          "w": 1366,
          "h": 320
         },
         "prova": "provas/abrantes/alt-p3.png"
        },
        {
         "html": "<flt-semantics id=\"flt-semantic-node-395\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
         "caixa": {
          "x": 59,
          "y": 1045,
          "w": 20,
          "h": 20
         }
        },
        {
         "html": "<flt-semantics id=\"flt-semantic-node-397\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
         "caixa": {
          "x": 104,
          "y": 1045,
          "w": 20,
          "h": 20
         }
        }
       ]
      },
      {
       "url": "https://www.cm-abrantes.pt/#/abrantes-digital",
       "n": 4,
       "exemplos": [
        {
         "html": "<flt-semantics-img role=\"img\" style=\"position: absolute; top: 0px; left: 0px; width: 1366px; height: 319.906px; font-size: 6px;\">",
         "caixa": {
          "x": 0,
          "y": 143,
          "w": 1366,
          "h": 320
         },
         "prova": "provas/abrantes/alt-p4.png"
        },
        {
         "html": "<flt-semantics id=\"flt-semantic-node-535\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
         "caixa": {
          "x": 59,
          "y": 1045,
          "w": 20,
          "h": 20
         }
        },
        {
         "html": "<flt-semantics id=\"flt-semantic-node-537\" role=\"img\" style=\"position: absolute; overflow: visible; pointer-events: auto; width: 20px; height: 20px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 10, 10);\">",
         "caixa": {
          "x": 104,
          "y": 1045,
          "w": 20,
          "h": 20
         }
        }
       ]
      }
     ]
    },
    "nota": null
   },
   "rotulos": {
    "valor": "nao_medivel",
    "prova": null,
    "nota": "Não apareceu nenhum campo de formulário nas páginas da amostra. Neste tipo de site os campos só existem quando a aplicação os mostra, por isso não se pode afirmar que não haja campos sem nome."
   },
   "contraste": {
    "valor": "nao_medivel",
    "prova": null,
    "nota": "O site desenha o texto como imagem: não há cores de texto e de fundo definidas no código para confirmar no ecrã, que é o que este critério exige."
   },
   "declaracao": {
    "valor": "nao",
    "prova": {
     "estado": "nao_encontrada",
     "url": null,
     "via": null,
     "ligacao": null,
     "texto": null,
     "de": null,
     "nivel": null,
     "excerto": null,
     "formato": null,
     "observacoes": null,
     "foraDoModelo": null,
     "falso404": null,
     "tentativas": [
      {
       "url": "https://www.cm-abrantes.pt/#/acessibilidade",
       "via": "caminho-habitual",
       "estado": null,
       "final": "https://www.cm-abrantes.pt/#/acessibilidade",
       "sinais": []
      },
      {
       "url": "https://www.cm-abrantes.pt/#/declaracao-de-acessibilidade",
       "via": "caminho-habitual",
       "estado": null,
       "final": "https://www.cm-abrantes.pt/#/declaracao-de-acessibilidade",
       "sinais": []
      },
      {
       "url": "https://www.cm-abrantes.pt/acessibilidade",
       "via": "caminho-habitual",
       "estado": 404,
       "final": "https://www.cm-abrantes.pt/acessibilidade",
       "sinais": []
      },
      {
       "url": "https://www.cm-abrantes.pt/declaracao-de-acessibilidade",
       "via": "caminho-habitual",
       "estado": 404,
       "final": "https://www.cm-abrantes.pt/declaracao-de-acessibilidade",
       "sinais": []
      }
     ]
    },
    "nota": "Não encontrámos a Declaração a partir da página inicial (na inicial, no menu aberto e nas páginas de cada secção do menu) nem nos caminhos habituais. Não quer dizer que não exista."
   },
   "selo": {
    "valor": "nao",
    "prova": {
     "estado": "semSinal",
     "nivel": null,
     "certificadoEm": null,
     "frase": null
    },
    "nota": "Informativo: não entra na pontuação."
   }
  },
  "rgpd": {
   "cookies": {
    "valor": "sim",
    "prova": {
     "total": 0
    },
    "nota": null
   },
   "trackers": {
    "valor": "sim",
    "prova": {
     "pedidos": 35,
     "soCarregou": []
    },
    "nota": null
   },
   "rejeitar": {
    "valor": "nao_aplicavel",
    "prova": null,
    "nota": "Sem aviso de cookies e sem rastreio medido: não há o que recusar. O aviso de cookies foi procurado no que o site mostra ao abrir, antes de qualquer clique."
   },
   "privacidade": {
    "valor": "sim",
    "prova": {
     "ligacao": {
      "texto": "Política de Privacidade",
      "url": "https://pp.cm-abrantes.pt/",
      "tipo": "botão (a aplicação não usa ligações <a>)"
     }
    },
    "nota": null
   }
  },
  "seguranca": {
   "https": {
    "valor": "sim",
    "prova": {
     "url": "https://www.cm-abrantes.pt/"
    },
    "nota": null
   },
   "redireccionamento": {
    "valor": "nao_aplicavel",
    "prova": {
     "saltos": [
      {
       "url": "http://www.cm-abrantes.pt/",
       "erro": "ECONNRESET"
      }
     ]
    },
    "nota": "A porta 80 não responde: não há versão http a redireccionar."
   },
   "hsts": {
    "valor": "nao",
    "prova": {
     "valor": null
    },
    "nota": null
   },
   "tls": {
    "valor": "sim",
    "prova": {
     "tls10": {
      "aceita": false,
      "erro": "ERR_SSL_TLSV1_ALERT_PROTOCOL_VERSION"
     },
     "tls11": {
      "aceita": false,
      "erro": "ERR_SSL_TLSV1_ALERT_PROTOCOL_VERSION"
     },
     "moderno": {
      "aceita": true,
      "versao": "TLSv1.3"
     }
    },
    "nota": null
   },
   "csp": {
    "valor": "nao",
    "prova": null,
    "nota": null
   },
   "enquadramento": {
    "valor": "nao",
    "prova": {
     "xFrameOptions": null,
     "frameAncestors": false,
     "ok": false
    },
    "nota": null
   },
   "nosniff": {
    "valor": "nao",
    "prova": {
     "valor": null
    },
    "nota": null
   },
   "referrer": {
    "valor": "nao",
    "prova": {
     "valor": null
    },
    "nota": null
   },
   "misto": {
    "valor": "sim",
    "prova": null,
    "nota": null
   },
   "versoes": {
    "valor": "sim",
    "prova": {
     "server": null,
     "geradores": [
      "Flutter"
     ]
    },
    "nota": null
   },
   "bibliotecas": {
    "valor": "sim",
    "prova": {
     "detectadas": []
    },
    "nota": null
   }
  }
 },
 "pontuacao": {
  "acessibilidade": {
   "sim": 1,
   "medidos": 4,
   "pontos": 25
  },
  "rgpd": {
   "sim": 3,
   "medidos": 3,
   "pontos": 100
  },
  "seguranca": {
   "sim": 5,
   "medidos": 10,
   "pontos": 50
  },
  "global": 58.3
 },
 "historico": [
  {
   "medidoEm": "2026-09-25T17:57:45.198Z",
   "medivel": false,
   "motivo": "só 38 elementos no DOM"
  },
  {
   "medidoEm": "2026-09-25T18:37:30.347Z",
   "medivel": false,
   "motivo": "só 38 elementos no DOM"
  },
  {
   "medidoEm": "2026-09-25T20:08:10.204Z",
   "medivel": false,
   "motivo": "aplicação Flutter desenhada em canvas: o conteúdo não existe no HTML, e os critérios deste índice leem o HTML"
  },
  {
   "medidoEm": "2026-09-26T17:54:13.912Z",
   "medivel": false,
   "motivo": "aplicação Flutter desenhada em canvas: o conteúdo não existe no HTML, e os critérios deste índice leem o HTML"
  },
  {
   "medidoEm": "2026-09-26T18:11:50.928Z",
   "medivel": false,
   "motivo": "erro do motor: Cannot read properties of undefined (reading 'a11y')"
  },
  {
   "medidoEm": "2026-09-26T18:18:48.888Z",
   "medivel": false,
   "motivo": "aplicação Flutter: a árvore de semântica não trouxe conteúdo legível"
  },
  {
   "medidoEm": "2026-09-26T18:27:22.200Z",
   "medivel": true,
   "motivo": null
  },
  {
   "medidoEm": "2026-09-26T18:37:19.879Z",
   "medivel": true,
   "motivo": null
  }
 ],
 "recalculadoEm": "2026-09-26T22:39:14.408Z"
}