Citation: 4A_300/2019 E. B

B.a. Le 19 décembre 2011, l'entreprise de construction (demanderesse) a ouvert action contre la défenderesse. La conciliation ayant échoué, elle a conclu, le 17 février 2012, à ce que celle-ci lui paie le montant de 32'394 fr.75, constitué, selon elle, du solde de 29'800 fr. (confirmé par le tableau du 21 novembre 2011) et du solde impayé de la facture du 11 octobre 2011 (d'un montant de 25'967 fr.75), soit après déduction des rabais (3'346 fr.) et de l'acompte déjà versé (20'027 fr.), un montant de 2'594 fr.75. Le 21 mai 2012, la défenderesse a conclu au rejet intégral de la demande et, reconventionnellement, au paiement de 146'634 fr. Elle a justifié ce montant en alléguant notamment des facturations erronées pour certains postes, des cas de double facturation pour d'autres postes, des erreurs de calcul (volumes de matériaux), ainsi que des pénalités dont elle a dû s'acquitter en raison de retards partiellement imputables à la demanderesse. La demanderesse a confirmé les conclusions de sa demande et conclu au rejet de la demande reconventionnelle. Le 16 novembre 2012, la défenderesse a réduit ses conclusions à 138'984 fr. Une expertise judiciaire a été ordonnée. Le 25 février 2015, l'expert a délivré un rapport et, le 25 novembre 2015, un rapport complémentaire. Il y sera fait référence dans la mesure où cela s'avère nécessaire pour trancher le litige. B.b. Par jugement du 21 juin 2016, le Tribunal régional du Littoral et du Val-de-Travers a admis intégralement la demande principale et rejeté la demande reconventionnelle. B.c. Par arrêt du 13 mai 2019, la Cour d'appel civile du Tribunal cantonal neuchâtelois a admis très partiellement l'appel formé par la défenderesse et, réformant le jugement précédent, condamné celle-ci à verser à la demanderesse la somme de 20'673 fr.15, intérêts en sus. Elle a confirmé le jugement attaqué pour le surplus (rejet de la demande reconventionnelle).