Em direção ao canto superior direito da janela do navegador, um aplicativo exibe a mensagem "Sua sessão expirará em NN minutos". Essa mensagem muda uma vez por minuto enquanto não há atividade. Quando falta menos de um minuto, ela muda para "NN segundos" e, naturalmente, muda uma vez por segundo. Quando as interações do usuário enviam uma nova solicitação ao servidor, NN é redefinido para 30.
Os usuários de leitores de tela querem um alerta sonoro toda vez que isso muda (a) a cada minuto, (b) a cada segundo, (c) na redefinição para 30? Não sei onde fica a preferência geral entre "preciso saber quanto tempo me resta antes de perder minha sessão" e "isso é realmente uma distração".
O WCAG 2.2.2 fornece "Para qualquer informação de atualização automática que (1) inicia automaticamente e (2) é apresentada em paralelo com outro conteúdo, há um mecanismo para o usuário pausar, parar ou ocultá-la ou controlar a frequência da atualização, a menos que a atualização automática faça parte de uma atividade em que seja essencial." Isso parece mais voltado para atualizações imprevisíveis, como quando uma nova entrada aparece em um fluxo de notícias ao vivo em uma barra lateral que é tangencial ao uso da página pelo usuário do que em um cronômetro, onde o ponto principal é que o usuário precisa de uma indicação atualizada de quanto tempo resta. Essa disposição é aplicável aqui? Acho que se dermos a um usuário de leitor de tela os meios para pará-lo, isso resolveria minha primeira pergunta acima. De qualquer forma, não tenho certeza se isso é mais útil para um usuário visual do que um desperdício de espaço na tela. O que você acha?
Não acho que o SC 2.2.2 se aplique aqui. Há uma exceção para informações "essenciais", e saber quando sua sessão irá expirar se enquadraria nessa exceção. O SC que realmente se aplica aqui é o 4.1.3 Mensagens de Status, que requer que a mensagem seja implementada de uma forma que possa ser captada por leitores de tela automaticamente conforme ela muda (geralmente por meio de uma região ARIA ao vivo).
Quanto à frequência com que anunciar essas mudanças, vai depender do contexto e dos seus usuários. Para algo assim, você pode começar com uma longa pausa entre os anúncios e, em seguida, diminuir gradualmente a pausa conforme a sessão se aproxima do fim. Por exemplo, force um anúncio apenas em 25, 20, 15 e 10 minutos. Então, quando chegar a 5 minutos, force um anúncio em 5, 4, 3, 2 e 1 minuto. Abaixo de 1 minuto, talvez force um anúncio em 30 segundos e 10 segundos. Eu provavelmente forçaria um anúncio toda vez que o cronômetro fosse redefinido para 30 minutos, desde que isso não acontecesse com tanta frequência a ponto de ser irritante.
Para fazer isso corretamente, você provavelmente vai querer ter uma região ARIA ao vivo visualmente oculta para onde você pode enviar essas mensagens periódicas (e então você vai querer remover a mensagem da região ao vivo após 5-10 segundos para que usuários de leitores de tela não tropecem nela acidentalmente). A mensagem visual que está constantemente mudando não seria uma região ao vivo.
Resumindo, não há uma resposta certa. A frequência com que você força um anúncio para usuários de leitores de tela vai depender do aplicativo e de seus usuários. Mas acho que uma aposta segura é errar do lado de menos anúncios, especialmente quando a expiração está longe. Usuários de leitores de tela também podem verificar manualmente o tempo restante. Pode ser uma boa ideia criar um marco de região para a mensagem de expiração ou dar a ela um título, para que os usuários de leitores de tela possam navegar até ela rapidamente, se necessário.