<!-- Copyright 2014-2021 Signal Messenger, LLC --> <!-- SPDX-License-Identifier: AGPL-3.0-only --> <html> <head> <meta charset="utf-8" /> <title>TextSecure test runner</title> <link rel="stylesheet" href="../node_modules/mocha/mocha.css" /> <link rel="stylesheet" href="../stylesheets/manifest.css" /> </head> <body> <div id="mocha"></div> <div id="tests"></div> <script type="text/x-tmpl-mustache" id="app-loading-screen"> <div class='module-title-bar-drag-area'></div> <div class='content'> <div class="module-splash-screen__logo module-img--150"></div> <div class='container'> <span class='dot'></span> <span class='dot'></span> <span class='dot'></span> </div> <div class='message'>{{ message }}</div> </div> </script> <script type="text/x-tmpl-mustache" id="two-column"> <div class='module-title-bar-drag-area'></div> <div class='left-pane-placeholder'></div> <div class='conversation-stack'> <div class='no-conversation-open'> <div class="module-splash-screen__logo module-img--128 module-logo-blue"></div> <h3>{{ welcomeToSignal }}</h3> <p class="whats-new-placeholder"></p> <p>{{ selectAContact }}</p> </div> <div id="toast"></div> </div> <div class='lightbox-container'></div> </script> <script type="text/x-tmpl-mustache" id="conversation"> <div id="ConversationView__template"></div> </script> <script type="text/x-tmpl-mustache" id="recorder"> <button class='finish'><span class='icon'></span></button> <span class='time'>0:00</span> <button class='close'><span class='icon'></span></button> </script> <script type="text/x-tmpl-mustache" id="file-size-modal"> {{ file-size-warning }} ({{ limit }}{{ units }}) </script> <script type="text/x-tmpl-mustache" id="group-member-list"> <div class='container'> {{ #summary }} <div class='summary'>{{ summary }}</div>{{ /summary }} </div> </script> <script type="text/javascript" src="../js/components.js"></script> <script type="text/javascript" src="../ts/backboneJquery.js"></script> <script type="text/javascript" src="../js/reliable_trigger.js" data-cover ></script> <script type="text/javascript" src="../node_modules/mocha/mocha.js" ></script> <script type="text/javascript"> mocha.setup('bdd'); </script> <script type="text/javascript" src="test.js"></script> <script type="text/javascript" src="../js/database.js" data-cover></script> <script type="text/javascript" src="../libtextsecure/protocol_wrapper.js" ></script> <script type="text/javascript" src="../js/libphonenumber-util.js"></script> <script type="text/javascript" src="../js/expiring_messages.js" data-cover ></script> <script type="text/javascript" src="../js/expiring_tap_to_view_messages.js" data-cover ></script> <script type="text/javascript" src="../js/views/react_wrapper_view.js" ></script> <script type="text/javascript" src="views/whisper_view_test.js"></script> <script type="text/javascript" src="libphonenumber_util_test.js"></script> <script type="text/javascript" src="reliable_trigger_test.js"></script> <script type="text/javascript" src="database_test.js"></script> <script type="text/javascript" src="i18n_test.js"></script> <script type="text/javascript" src="stickers_test.js"></script> <script type="text/javascript"> window.Signal.conversationControllerStart(); window.test.prepareTests(); delete window.test.prepareTests; !(function () { const passed = []; const failed = []; class Reporter extends Mocha.reporters.HTML { constructor(runner, options) { super(runner, options); runner.on('pass', test => passed.push(test.fullTitle())); runner.on('fail', (test, error) => { failed.push({ testName: test.fullTitle(), error: error?.stack || String(error), }); }); runner.on('end', () => window.test.onComplete({ passed, failed })); } } mocha.reporter(Reporter); mocha.run(); })(); </script> </body> </html>