Citation: 4A_207/2023 E. A

A.a. B.________ SA (l'intimée) est une société immobilière. Au début 2019, C.________ en détenait le capital-actions et D.________ en était l'unique administrateur. En juillet 2019, E.________ a acquis le capital-actions de B.________ SA; il est depuis lors seul administrateur de la société. A.b. B.________ SA est propriétaire d'un immeuble sis à (...), à U.________. Dès 2001, elle en a confié la gestion à F.________ SA, qui résiliera le contrat de gérance pour fin décembre 2019. A.c. Au début 2019, des réparations se sont révélées nécessaires dans cet immeuble, dans lequel résidait l'actionnaire unique de B.________ SA. Une rénovation totale du parking souterrain s'imposait, notamment afin de pouvoir relouer la surface commerciale du bâtiment. Dans ce cadre, l'autorité de surveillance des installations électriques exigeait une remise en état de l'installation électrique existante, ainsi qu'un raccordement adapté au nouveau type de construction (garage muni d'une porte et de barrières électriques, avec un système de ticketing). La décision de rénover le parking a été prise en mars 2019 par la propriétaire (complément d'office sur la base de la décision de première instance). F.________ SA a alors contacté A.________ Sàrl (la recourante), entreprise à laquelle, depuis près de vingt ans, elle confiait les travaux d'électricité à effectuer dans l'immeuble propriété de B.________ SA. En date du 20 mars 2019, A.________ Sàrl a établi un devis - adressé à la propriétaire par l'intermédiaire de la gérance - portant sur la remise en conformité des installations électriques du parking pour un montant de 29'538 fr. 55. F.________ SA a accepté ce devis oralement. Les travaux de rénovation nécessitaient la coopération sur place de plusieurs corps de métier, dont le spécialiste du genre d'installation en cause (G.________), chargé d'établir des plans et de commander l'installation. A.________ Sàrl devait donc composer avec d'autres entreprises, notamment en ce qui concerne le fonctionnement de la porte et des barrières électriques du parking. Pour cette partie-là des travaux d'électricité, intégrée dans les plans de la construction prévue, les prestations et leur prix ont été convenus oralement avec la gérance. La gérance a surveillé et coordonné les travaux de rénovation du parking souterrain, qui ont commencé en mai 2019. A.________ Sàrl a débuté son activité à ce moment-là. La construction de l'aménagement intérieur du parking a toutefois retardé la remise aux normes de l'installation électrique. Le bon de commande correspondant au devis du 20 mars 2019 a été remis par la gérance le 17 octobre 2019; l'entreprise d'électricité a pu alors reprendre les travaux, qui s'achèveront le 17 décembre 2019. Les travaux de rénovation du parking n'ont suscité aucune réclamation. En particulier, les travaux exécutés par A.________ Sàrl ont été contrôlés par l'autorité compétente pour surveiller les installations électriques. Ils ont été acceptés par F.________ SA avant la résiliation du contrat de gérance. A.d. E.________ n'a pas été informé des travaux de rénovation du parking, qui étaient en cours en juillet 2019, à l'époque où il a acquis le capital-actions de la SA propriétaire de l'immeuble qu'il n'a pas visité. A.e. A.________ Sàrl a établi à l'attention de B.________ SA trois factures pour un montant total de 41'684 fr. 35, soit : - une facture du 16 décembre 2019 par 10'796 fr. 35 pour interventions du 2 mai au 12 décembre 2019 concernant la remise en fonction des portes et l'installation de G.________; - une facture du 20 décembre 2019 par 30'235 fr. 20 pour interventions du 25 octobre au 17 décembre 2019 concernant la remise en conformité des installations électriques du parking; - une facture du 20 décembre 2019 par 652 fr. 80 pour une intervention du 12 décembre 2019 relative à un raccordement au compteur électrique. Ces factures, qui n'ont pas été contestées par B.________ SA, sont demeurées impayées.