Faits : A. Le 2 décembre 2017, A._ et son ami C._ se sont rendus en voiture au restaurant B._, à..., exploité par la société anonyme éponyme (ci-après: la société ou l'hôtel). A leur arrivée, aux alentours de 20 heures, C._, le conducteur, a confié le véhicule de marque Audi modèle Q7 au voiturier, D._, afin qu'il le prenne en charge et le gare. A._ et son ami ont ensuite été accompagnés au restaurant, où ils ont passé la soirée. Vers minuit, les employés de l'hôtel - E._ et F._ - ont été chargés d'aller chercher la voiture et de l'avancer devant l'établissement. Par SMS du 3 décembre 2017 à 2h07, C._ a écrit à G._, employé de l'hôtel, pour le remercier de «cette belle soirée», tout en précisant que la cuisine n'avait pas été à la hauteur de ses attentes, que le service «de haute volée» était toujours un régal, qu'il était heureux de l'avoir revu et qu'il se réjouissait de le recevoir très prochainement. Le même jour à 18h46, C._ a derechef envoyé à G._ un SMS, dans lequel il indiquait que son carnet d'adresses lui était ouvert et qu'il se réjouissait de parler plus concrètement de leurs projets lors de sa venue à Genève. Par courriel du 4 décembre 2017, A._ a informé l'hôtel qu'un dommage avait été constaté sur le volant de la voiture susdécrite, précisant qu'il s'agissait du véhicule de C._; elle lui demandait de prendre en charge le remplacement du volant. En procédure, elle produira une photographie prise le 3 décembre 2017 à 14h48 montrant un éclat sur la partie laquée en émail blanc du volant. Par courriel du 7 février 2018, A._ a requis de la société le paiement du remplacement du volant pour un montant de 3'665 fr. L'interpellée a répondu ce qui suit par courriel du 19 février 2018: " Comme nous l'avons expliqué à Madame A._, nous contestons avoir endommagé le volant de son véhicule. À aucun moment il n'y a eu un moindre choc. En effet, les collaborateurs qui l'ont déplacé l'ont fait avec le plus grand soin. Ils ne portaient aucune bague ni autre objet. L'ensemble de notre équipe était au courant de la venue de Madame A._ ainsi que de la personne qui l'accompagnait. Il s'agissait d'une table importante et nous avions à coeur de donner le meilleur de nous-mêmes. Vous trouverez ci-dessous le déroule ment des événements: 2 décembre 2017 L' A udi blanche arrive sur le parking à 19h56. A 19h57, sortie de D._ et de G._ pour accueillir Madame A._. G._ accompagne Madame A._ au restaurant gastronomique. D._ monte dans la voiture à 19h58 e t commence la manoeuvre de parcage. A 20h00, il sort de la voiture. Elle est stationnée devant une colonne. A 23h58, F._ et E._ montent dans la voiture. Ils manoe u vrent ensemble pour mettre la voiture devant l'hôtel jusqu'à 00h00, puis E._ fait un tour complet pour que la voiture soit bien alignée. Il est 00h02." Selon un devis établi par H._ Sàrl le 18 juin 2018, les travaux de réparation du volant du véhicule s'élèvent à 7'273 fr.; ils comprennent le remplacement du volant, de l'airbag ainsi que la reprogrammation de l'airbag et des commandes du volant. Ce document indique que le véhicule en cause porte les plaques ZG xxx et, sous la rubrique «Nom», celui de l'entreprise I._ à.... B. Par demande du 29 août 2018, A._ a conclu à ce que Société B._ SA lui verse 7'272 fr. avec intérêts à titre de réparation du dommage et 6'000 fr. à titre de dommages-intérêts liés aux frais de défense avant le dépôt de la procédure. Lors de l'audience d'instruction et de jugement du 29 avril 2019, la demanderesse a informé d'entrée de cause le président que le témoin C._ ne se présenterait pas, produisant un certificat médical selon lequel l'intéressé se trouvait en incapacité de travail. Elle a sollicité une nouvelle convocation du témoin et le renvoi des plaidoiries finales à une date ultérieure. La défenderesse s'y est opposée. Statuant sur le siège, le président a rejeté la requête. G._, D._, E._, F._ et J._, vendeur de pièces automobiles, ont été entendus comme témoins. La demanderesse et K._, directeur général de l'hôtel, pour la défenderesse ont ensuite été interrogés à forme de l'art. 191 CPC. Après audition des témoins et interrogatoire des parties, la demanderesse a renouvelé sa requête d'audition du témoin C._ et de renvoi des plaidoiries finales, exposant qu'elle venait de recevoir un courriel de celui-ci selon lequel il avait demandé un autre certificat médical qui ne pourrait être adressé que le lendemain. La défenderesse s'y est derechef opposée. Statuant sur le siège, le président a rejeté cette nouvelle requête, puis a clos l'instruction. Par jugement du 10 mai 2019, dont les considérants écrits ont été adressés aux parties pour notification le 6 août 2019, le Président du Tribunal civil de l'arrondissement de l'Est vaudois a rejeté la demande. Il a considéré que la demanderesse avait échoué à établir qu'elle était la propriétaire du véhicule prétendument endommagé, de sorte qu'elle ne disposait pas de la légitimation active; au surplus, elle n'avait pas non plus démontré que le dommage allégué avait été causé par le personnel de la défenderesse. Statuant sur appel de la demanderesse, la Cour d'appel civile du canton de Vaud a confirmé ce jugement par arrêt du 19 novembre 2019. Ses motifs seront évoqués dans les considérants en droit, dans la mesure utile à la discussion des griefs. C. A._ interjette un recours constitutionnel subsidiaire, concluant à l'annulation de l'arrêt cantonal et au renvoi de la cause à l'autorité précédente. Société B._ SA propose le rejet du recours. La cour cantonale se réfère aux considérants de son arrêt.