Un Utente Fa Clic su un Pulsante Acquisisce una Schermata del Bug e Me la Invia Senza Installare Nulla
C'è un momento nella vita di ogni applicazione web in cui un utente incontra qualcosa di rotto. Un pulsante che non fa nulla quando viene cliccato. Un layout che si collassa su una particolare dimensione dello schermo. Un modulo che ingoia il proprio messaggio di errore. L'utente fissa lo schermo confuso e poi fa una di due cose. La maggior parte di loro semplicemente se ne va e non torna mai più. Pochi si prendono il tempo per comporre un messaggio del tipo "qualcosa non va con il tuo sito." Quel messaggio arriva senza contesto, senza una descrizione di quello che è successo, senza alcuna indicazione di quale browser o dispositivo fosse coinvolto, e certamente senza uno screenshot che mostri il problema effettivo. Lo sviluppatore legge il messaggio, tenta di riprodurre il problema, fallisce, e il bug rimane non riparato finché non morde l'utente successivo. Questo ciclo si ripete infinitamente su Internet e la causa profonda non è la pigrizia dell'utente. La causa profonda è l'attrito.
Fare uno screenshot su un computer richiede di conoscere il giusto scorciatoia da tastiera che varia a seconda del sistema operativo. Su Windows potrebbe essere Stampa, o Alt più Stampa per la finestra attiva, o tasto Windows più Maiusc più S per lo strumento di ritaglio. Su un Mac è Comando più Maiusc più 3, o 4, o 5, ciascuno dei quali produce risultati leggermente diversi. Su un telefono il gesto comporta premere due pulsanti fisici contemporaneamente che metà del tempo blocca accidentalmente lo schermo. Dopo che lo screenshot è stato scattato deve essere individuato nel file system allegato a un'e-mail o incollato in un modulo di supporto e inviato. Ciascuno di questi passaggi è un altro punto in cui l'utente si arrende e decide che il bug non vale la pena segnalare. Il risultato è che gli sviluppatori ricevono approssimativamente un rapporto per ogni cento bug che gli utenti effettivamente incontrano.
La soluzione che è emersa da questo disagio è imbarazzantemente semplice. Un piccolo pulsante appare sulla pagina. Quando l'utente lo fa clic il server acquisisce uno screenshot della pagina esatta che l'utente sta visualizzando e lo allega a un rapporto. Nessuna estensione del browser richiesta. Nessun scorciatoia da tastiera da ricordare. Nessun file da individuare e caricare. Un clic un screenshot un rapporto. L'utente aggiunge una frase o due che descrivono cosa è andato storto e lo sviluppatore riceve un'immagine perfettamente chiara della pagina rotta insieme alla descrizione. Questo è l'intero flusso di lavoro e ha cambiato il modo in cui i rapporti sui bug arrivano.
Perché le Estensioni del Browser Non Hanno Mai Risolto Questo Problema
La reazione ovvia iniziale è che le estensioni del browser già esistono per questo scopo. Ci sono dozzine di strumenti per la cattura di screenshot disponibili come estensioni Chrome componenti aggiuntivi di Firefox e plug-in Safari. Alcuni di loro sono piuttosto buoni con funzioni di annotazione caricamenti automatici e integrazione con piattaforme di gestione dei progetti. Ma condividono tutti lo stesso difetto fondamentale. Richiedono all'utente di installare qualcosa prima che si verifichi il bug. Nessuno installa un'estensione di segnalazione bug in modo preventivo nel caso in cui un sito web che visitano domani abbia un layout rotto. Le estensioni risolvono il problema per i team di controllo qualità e i tester interni che possono essere incaricati di installare strumenti specifici. Non fanno assolutamente nulla per il pubblico in generale che incontra un bug per la prima volta su un sito che potrebbe non visitare mai più.
C'è anche la questione della fiducia. Chiedere a un utente di installare un'estensione del browser per segnalare un bug introduce un cambiamento stridente nell'interazione. L'utente è venuto al sito per realizzare qualcosa ha scoperto che era rotto e ora gli viene chiesto di installare software di terze parti. Quella richiesta giustamente farà sorgere sospetti in molti utenti e anche quelli disposti a conformarsi affrontano l'overhead di navigare negli store di estensioni concedere autorizzazioni e capire come funziona lo strumento. Nel momento in cui l'estensione è installata il bug originale potrebbe non essere più riproducibile o l'utente si è semplicemente spostato verso un concorrente. La finestra per acquisire una segnalazione di bug è stretta e tutto ciò che allarga il divario tra "qualcosa non va" e "rapporto inviato" significa che il rapporto non viene mai inviato.
Librerie di screenshot lato client come html2canvas hanno tentato di risolvere questo da un'angolazione diversa. Queste librerie JavaScript renderizzano il DOM in un elemento canvas creando effettivamente uno screenshot senza alcun coinvolgimento del server. Funzionano ragionevolmente bene per layout semplici ma si rompono rapidamente con CSS complessi iframe incorporati immagini cross-origin elementi canvas e font personalizzati. L'immagine risultante spesso non assomiglia affatto a quello che l'utente vede effettivamente il che sconfigge completamente lo scopo. Una segnalazione di bug contenente uno screenshot che non corrisponde alla pagina reale è peggio di nessuno screenshot perché invia lo sviluppatore a inseguire un problema visivo che non esiste mentre il problema reale rimane nascosto.
Screenshot Lato Server e Come Acquisiscono Quello Che l'Utente Vede
L'approccio dietro screenshots.yeb.to prende un percorso completamente diverso. Invece di tentare di ricostruire la pagina lato client il server riceve l'URL e la renderizza utilizzando un vero motore del browser in esecuzione in un ambiente controllato. Lo screenshot è scattato da un'istanza Chromium reale che carica la pagina esegue JavaScript applica CSS renderizza i font e acquisisce il risultato come immagine pixel-perfect. Ciò significa che lo screenshot assomiglia esattamente a quello che visualizza un vero browser perché è quello che visualizza un vero browser.
Quando un utente fa clic sul pulsante di segnalazione bug l'URL della pagina corrente viene inviato al server insieme ai metadati sulle dimensioni del viewport dell'utente il rapporto pixel del dispositivo e qualsiasi parametro di stato rilevante. Il server avvia una sessione del browser headless configurata per corrispondere il più fedelmente possibile a questi parametri. Carica la pagina attende il completamento di tutti gli asset e acquisisce lo screenshot. Il risultato viene archiviato e collegato alla segnalazione di bug dando allo sviluppatore un record visivo accurato della pagina nel momento in cui l'utente ha fatto clic sul pulsante. L'intero processo richiede alcuni secondi il che è abbastanza veloce da consentire all'utente di aggiungere la sua descrizione mentre lo screenshot viene generato in background.
Ci sono sfumature che vale la pena riconoscere. Uno screenshot lato server acquisisce la pagina come appare al server non necessariamente esattamente i pixel sullo schermo dell'utente. Se il bug è causato da stranezze di rendering specifiche del browser contenuto memorizzato nella cache o stato archiviato localmente l'acquisizione del server potrebbe non riprodurre lo stesso artefatto visivo esatto. Ma in pratica la stragrande maggioranza dei bug che gli utenti segnalano sono problemi di layout immagini rotte contenuti mancanti o guasti funzionali che sono coerenti indipendentemente da chi carica la pagina. Per questi casi uno screenshot lato server è indistinguibile da uno lato client e la massiccia riduzione dell'attrito rende il compromesso utile.
Incorporamento del Pulsante Senza Modificare l'Applicazione
L'integrazione è intenzionalmente minima. Un piccolo snippet JavaScript carica il componente del pulsante che può essere stilizzato in modo da corrispondere al sistema di design dell'applicazione host. Il pulsante galleggia in un angolo della pagina visibile ma discreto. Una volta cliccato apre una sovrapposizione leggera dove l'utente può digitare una breve descrizione e facoltativamente evidenziare l'area della pagina in cui si è verificato il problema. Dietro le quinte lo snippet invia l'URL corrente al API screenshot che acquisisce la pagina e restituisce l'URL dell'immagine. Il rapporto contenente lo screenshot la descrizione l'URL e i metadati del browser di base viene quindi inoltrato a qualunque destinazione lo sviluppatore ha configurato un indirizzo e-mail un webhook Slack uno strumento di gestione dei progetti o un endpoint personalizzato.
L'intera integrazione non richiede modifiche al backend dell'applicazione. Non c'è SDK da installare nessun middleware da configurare nessuno schema del database da modificare. Lo snippet funziona in modo indipendente comunicando solo con l'API screenshot e la destinazione del rapporto configurata. Ciò significa che può essere inserito in un blog WordPress un'applicazione React single page un sito HTML statico o un'applicazione PHP legacy con uguale facilità. Il tempo dalla decisione di aggiungere la segnalazione di bug al momento della sua attivazione nel sito viene misurato in minuti non sprint.
Per gli sviluppatori che desiderano un'integrazione più profonda l'API può essere chiamata direttamente dal codice lato server. Questo apre possibilità come l'acquisizione automatica di uno screenshot ogni volta che si verifica un'eccezione non gestita o l'acquisizione periodica di screenshot di pagine critiche e il confronto con una linea di base per rilevare regressioni visive. Ma per il caso d'uso di base di consentire agli utenti di segnalare bug con un solo clic lo snippet JavaScript gestisce tutto senza alcuna modifica lato server.
Cosa Cambia Quando i Rapporti sui Bug Effettivamente Arrivano
La trasformazione nella qualità della segnalazione dei bug è drammatica. Prima di implementare il pulsante il tipico rapporto di bug era una frase vaga in un'e-mail. "La pagina sembra strana." "Il checkout è rotto." "Qualcosa è successo quando ho cercato di salvare." Questi rapporti richiedevano molteplici cicli di domande di follow-up durante i quali l'utente spesso perdeva la pazienza e smetteva di rispondere. Dopo aver implementato il pulsante i rapporti arrivano con uno screenshot chiaro che mostra esattamente cosa è andato storto accompagnato da metadati che identificano la pagina le dimensioni del viewport e l'ora del verificarsi. Uno sviluppatore può guardare lo screenshot e capire immediatamente il problema senza alcun scambio botta e risposta.
Il volume dei rapporti aumenta anche significativamente. Gli utenti che non avrebbero mai composto un'e-mail o compilato un modulo di supporto cliccheranno un pulsante e digiteranno tre parole. "Il menu si sovrappone al contenuto" non è la segnalazione di bug più dettagliata del mondo ma combinata con uno screenshot che mostra un menu di navigazione sovrapposto all'area di contenuto principale su un viewport mobile comunica allo sviluppatore tutto ciò che è necessario per riprodurre e correggere il problema. La combinazione di attrito inferiore e contesto più ricco significa che i bug vengono segnalati prima vengono corretti più velocemente e verificati più affidabilmente. I giorni della scoperta di un bug di layout critico tre settimane dopo la sua introduzione sono in gran parte finiti per qualsiasi applicazione che distribuisca questo tipo di meccanismo di feedback.
C'è un vantaggio secondario che è meno ovvio ma altrettanto prezioso. L'archivio degli screenshot diventa una cronologia visiva dell'applicazione. Ogni rapporto cattura un momento nel tempo mostrando esattamente come appariva la pagina quando l'utente ha incontrato un problema. Nel corso di settimane e mesi questo archivio rivela modelli. Forse una pagina specifica si rompe ogni volta che viene distribuito un nuovo deployment. Forse gli utenti mobili segnalano problemi a un tasso tre volte superiore rispetto agli utenti desktop. Forse una versione particolare del browser produce costantemente anomalie di layout. Questi modelli sono invisibili nei rapporti di bug solo testo ma diventano immediatamente evidenti quando si sfoglia una galleria di screenshot con timestamp.
Domande Frequenti
L'utente deve installare qualcosa per usare il pulsante di segnalazione bug?
Non è richiesta alcuna installazione. Il pulsante è incorporato direttamente nella pagina web utilizzando un piccolo snippet JavaScript. Gli utenti lo cliccano digitano una breve descrizione e il rapporto viene inviato automaticamente. Non ci sono estensioni del browser download o iscrizioni da parte dell'utente.
Quanto è accurato uno screenshot lato server rispetto a quello che l'utente effettivamente vede?
Gli screenshot lato server vengono generati da un vero motore del browser Chromium quindi renderizzano accuratamente HTML CSS JavaScript e font. Per la stragrande maggioranza dei bug di layout contenuti mancanti e problemi funzionali lo screenshot corrisponde a quello che l'utente vede. I casi limite che coinvolgono contenuti memorizzati nella cache localmente o stranezze di rendering specifiche del browser potrebbero differire leggermente.
Il pulsante può essere personalizzato per adattarsi al design del mio sito web?
Sì. Il componente pulsante accetta parametri di stile che ti consentono di personalizzarne il colore la posizione la dimensione e l'etichetta per adattarsi al sistema di design della tua applicazione. Può galleggiare in qualsiasi angolo del viewport o essere ancorato a un elemento specifico sulla pagina.
Quali informazioni sono incluse nella segnalazione di bug?
Ogni rapporto include l'immagine dello screenshot la descrizione digitata dall'utente l'URL della pagina le dimensioni del viewport il rapporto pixel del dispositivo un timestamp e l'identificazione base del browser. Gli sviluppatori possono configurare campi di metadati aggiuntivi se necessario.
Quanto tempo impiega l'acquisizione dello screenshot?
Lo screenshot viene tipicamente generato entro due o cinque secondi a seconda della complessità della pagina. Il processo viene eseguito in background mentre l'utente digita la sua descrizione quindi nella maggior parte dei casi lo screenshot è pronto prima che l'utente finisca di scrivere.
Può integrarsi con strumenti di gestione dei progetti come Jira o Trello?
I rapporti possono essere inoltrati a qualsiasi endpoint che accetti richieste HTTP il che include la maggior parte degli strumenti di gestione dei progetti tramite le loro API o tramite integrazioni webhook. Le configurazioni comuni includono canali Slack indirizzi e-mail progetti Jira e dashboard interni personalizzati.