Citation: 4A_570/2020 E. A

A.a. A.________ SA, anciennement A1.________ Sàrl, est une société ayant pour but le développement, la distribution et l'installation de produits technologiques. B.________ Sàrl est une société dont le but consiste notamment en l'achat, la vente et le négoce de biens immobiliers, ainsi que la fourniture de services et d'investissements dans l'immobilier en tant que propriétaire, sous-traitant ou entreprise générale. A.b. Le 23 novembre 2015, alors que B.________ Sàrl agissait en qualité d'entreprise générale dans le cadre d'un projet de construction situé à xxx, elle a conclu avec A.________ SA un contrat portant sur la vente et l'installation de six ascenseurs à voitures. Ces derniers consistaient en deux plateformes superposées: pour y installer son véhicule, l'utilisateur devait d'abord " faire sortir " de terre la plateforme inférieure, puis, après y avoir placé son véhicule, la faire redescendre sous terre. Le contrat prévoyait le respect de la Directive 2006/42/CE du Parlement européen et du Conseil du 17 mai 2006 relative aux machines (ci-après: Directive 2006/42/CE). Il mentionnait également la fourniture de certains documents, dont un certificat CE. Le prix forfaitaire convenu s'élevait à 300'000 fr. Il devait intervenir en trois acomptes; le dernier, de 75'000 fr., était exigible dans les trente jours suivant la fin de l'installation et des tests. S'agissant de l'obtention du permis de construire, le contrat indiquait " ce qui reste à prévoir: permis de construire [...]. " Les conditions générales de vente (ci-après: CGV) de A.________ SA ont été intégrées au contrat. L'art. 16 CGV était libellé comme suit: " Les réclamations doivent être annoncées par écrit dans les 2 semaines à compter de la réception de la marchandise et avant leur [sic] transformation. Lors de la réception de la livraison, l'acheteur doit contrôler que la livraison est complète et d'une qualité suffisante. Les différences ou défauts éventuels doivent être mentionnés sur les documents de livraison. Si des écarts sont constatés par rapport à la facture établie, les réclamations doivent être formulées par écrit au plus tard une semaine à compter de la réception de la facture. Dans le cas contraire, la marchandise et la facture sont considérées comme acceptées. [...] " A.c. Le permis de construire avait été délivré préalablement le 8 juin 2015 par le Département des constructions du canton de Bâle-Ville (ci-après: le Département). Le chiffre 11 du permis disposait notamment que des parapets, garde-corps ou mains courantes devaient être construits selon la norme SIA 358, conformément à la situation de risque correspondante. A.d. B.________ Sàrl s'est acquittée du premier acompte le 26 novembre 2015 et du deuxième le 25 avril 2016. A.e. A.________ SA a installé les six ascenseurs à voitures et les a terminés en date du 23 février 2017. C.________, directeur de A.________ SA, et D.________, associé gérant de B.________ Sàrl, ont déclaré lors de leur audition devant le tribunal de première instance que la remise des installations avait eu lieu fin janvier-début février 2017. D.________ a précisé qu'au cours de l'inspection du bâtiment effectuée le 1er février 2017 par les parties en présence d'un inspecteur du Département, ce dernier avait émis des doutes concernant la sécurité des plateformes. B.________ Sàrl avait alors demandé à A.________ SA si elle pouvait lui certifier que les normes de sécurité étaient respectées. A.________ SA n'avait pas fourni de document à cet égard pouvant être remis à l'inspecteur. D.________ a ajouté qu'après l'inspection du 1er février 2017, il n'y avait pas eu réception des ascenseurs par le Département. A.f. Le 24 février 2017, A.________ SA a fait parvenir à B.________ Sàrl une facture relative à la dernière tranche de paiement de 75'000 fr. Le 16 mars 2017, B.________ Sàrl s'est acquittée de la moitié de cette somme, soit 37'500 fr. Le 17 mars 2017, A.________ SA a envoyé une nouvelle facture concernant des frais de déplacement et d'hébergement pour un montant de 9'349 fr. 35. B.________ Sàrl ne l'a pas payée. A.g. Le 23 mars 2017, A.________ SA a adressé à B.________ Sàrl un courriel auquel étaient annexés un certificat de garantie et une déclaration de conformité. Cette dernière indiquait que l'ouvrage avait été fabriqué en conformité aux normes harmonisées en vigueur, soit notamment la norme DIN EN 14010. A.h. Par courriel du 16 mai 2017, A.________ SA a relancé B.________ Sàrl quant au règlement des deux factures restées en souffrance. Le lendemain, B.________ Sàrl a répondu qu'elle attendait de recevoir certains montants des propriétaires. A.i. Le 18 mai 2017, B.________ Sàrl a indiqué à A.________ SA que le système ne fonctionnait pas depuis deux jours. C.________ s'est alors rendu à xxx le 20 mai 2017 pour procéder à la réparation du système d'une des plateformes. Un fil s'était débranché du connecteur. A.j. Le Département a mandaté E.________ afin de procéder à une inspection des ascenseurs à voitures. Celle-ci s'est déroulée le 8 septembre 2017. Le 12 septembre 2017, le Département a ordonné la mise hors service immédiate de l'installation jusqu'à la suppression de tous les défauts constatés et dans l'attente du rapport de E.________, faute de sécurité suffisante au sens des normes d'aménagement du territoire du canton de Bâle-Ville. Il s'agissait des art. 59 et 60 al. 1 let. a BPG ( Bau- und Planungsgesetz du 17 novembre 1999; SG 730.100) et les art. 33 al. 4, 63 al. 2 et 64 BPV ( Bau- und Planungsverordnung du 19 décembre 2000; SG 730.110). A.k. Par courriels des 16 et 22 septembre 2017, B.________ Sàrl a signalé à A.________ SA que la construction posait des problèmes de sécurité et que les plateformes devaient être bloquées en position haute. Le 25 septembre 2017, A.________ SA s'est rendue sur place afin d'immobiliser les plateformes. Elle a ensuite adressé une facture à B.________ Sàrl d'un montant de 929 fr. 45 pour le déplacement et la sécurisation des plateformes. A.l. E.________ a rendu son rapport le 29 septembre 2017. Elle a déclaré qu'il y avait notamment des problèmes de sécurité dès lors qu'un trottoir public longeait le côté des ascenseurs à voitures. Elle a rappelé les prescriptions techniques et de sécurité applicables à l'installation, en faisant référence à la déclaration de conformité remise par A.________ SA. En particulier, elle a relevé qu'à teneur de l'art. 5.10.5 de la norme DIN EN 14010, l'accès à l'installation devait être limité aux personnes autorisées. Elle a encore mentionné différentes dispositions applicables prévues par la Directive 2006/42/CE et la norme DIN EN 14010, en indiquant " Pourquoi n'a-t-on pas mis en pratique ces exigences de sécurité? ". En conclusion, elle ne recommandait pas la poursuite de l'exploitation de l'installation dans cet état. Les personnes concernées devaient convenir des mesures à prendre pour améliorer la sécurité. En outre, le fabricant du système devait notamment être tenu de respecter toutes les informations énumérées dans la déclaration de conformité. A.m. Le 28 novembre 2017, le Département a adressé un courriel à B.________ Sàrl, dont il ressort en substance que la mise en place de barrières et de portes coulissantes autour des ascenseurs à voitures assurerait une sécurité suffisante pour permettre la remise en fonction des installations. Il a relevé l'absence tant de plans de modification que d'une liste complète des mesures nécessaires à mettre en oeuvre pour garantir la sécurité des installations (travaux d'entretien notamment). A.n. Par courriel du 4 décembre 2017, B.________ Sàrl a demandé à A.________ SA si elle approuvait la solution préconisée par le Département. Elle a joint des plans pour la construction de barrières entre les plateformes et le trottoir, ainsi qu'une offre pour un coût total de 21'600 fr. Par courriel du 6 décembre 2017, A.________ SA a répondu que la solution des barrières était bonne selon l'inspecteur, contacté par téléphone. Elle a refusé de prendre à sa charge les coûts d'installation, en indiquant que ce point n'avait jamais été abordé au cours du projet et n'avait pas été calculé dans l'offre initiale. A.o. A.________ SA a procédé, entre le 22 et le 23 janvier 2018, à plusieurs améliorations en vue de remédier à d'autres problèmes de sécurité soulevés par le rapport de E.________. A.p. Par lettre du 9 mai 2018, B.________ Sàrl a informé A.________ SA que le coût total de mise en place des barrières était estimé à 81'000 fr. Si A.________ SA n'entendait pas exécuter elle-même les travaux en question, B.________ Sàrl les réaliserait à sa place. Après le refus de A.________ SA tant d'effectuer les travaux que d'en assumer les coûts, B.________ Sàrl lui a adressé une mise en demeure formelle le 22 mai 2018, sans succès. A.q. B.________ Sàrl a fait exécuter les travaux nécessaires à la mise en conformité de l'installation, soit la mise en place d'une grille avec portails autour des plateformes. Le coût total s'est élevé à 73'283 fr. 35.