@ -3,32 +3,160 @@
< head >
< title > TextSecure test runner< / title >
< link rel = "stylesheet" href = "../components/mocha/mocha.css" / >
< link rel = "stylesheet" href = "../stylesheets/manifest.css" / >
< / head >
< body >
< div id = "mocha" >
< / div >
< div id = "tests" >
< / div >
< div id = "render-android" class = 'index' style = "width: 800; height: 500; margin:10px; border: solid 1px black;" >
< / div >
< div id = "render-ios" class = 'index' style = "width: 800; height: 500; margin:10px; border: solid 1px black;" >
< / div >
< script type = 'text/x-tmpl-mustache' id = 'two-column' >
< div class = 'gutter' >
< div class = 'title-bar active' id = 'header' >
< div class = 'header-buttons right' >
< div class = 'vertical-align' >
< div class = 'global-menu menu' >
< button class = 'hamburger' alt = 'signal menu' > < / button >
< ul class = 'menu-list' >
< li class = 'showSettings' > {{ settings }}< / li >
< li class = 'show-debug-log' > {{ submitDebugLog }}< / li >
< li class = 'restart-signal' > {{ restartSignal }}< / li >
< / ul >
< / div >
< span class = 'socket-status' > < / span >
< / div >
< / div >
< h1 > Signal< / h1 >
< div class = 'tool-bar clearfix' >
< input type = 'search' class = 'search' placeholder = '{{ searchForPeopleOrGroups }}' dir = 'auto' >
< span class = 'search-icon' > < / span >
< / div >
< / div >
< div class = 'content' >
< div class = 'conversations scrollable inbox' > < / div >
< div class = 'conversations scrollable search-results hide' >
< div class = 'new-contact contact hide' > < / div >
< / div >
< / div >
< / div >
< div class = 'conversation-stack' >
< div class = 'conversation placeholder' >
< div class = 'conversation-header' > < / div >
< div class = 'content' >
< img src = '/images/icon_128.png' / >
< h3 > {{ welcomeToSignal }}< / h3 >
< p > {{ selectAContact }}< / p >
< / div >
< / div >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'expired_alert' >
< a target = '_blank' href = 'https://chrome.google.com/webstore/detail/bikioccmkafdpakkkcpdbppfkghcmihk' >
< button class = 'upgrade' > {{ upgrade }}< / button >
< / a >
{{ expiredWarning }}
< / script >
< script type = 'text/x-tmpl-mustache' id = 'toast' >
{{ toastMessage }}
< / script >
< script type = 'text/x-tmpl-mustache' id = 'hint' >
< p > {{ content }}< / p >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'conversation' >
< div class = 'discussion-container' > < / div >
< div class = 'send-message-area' >
< div class = 'message-composer' >
< form class = 'send' >
< input class = 'send-message' rows = '6' type = 'textarea' >
< div class = 'attachments' >
< input type = 'file' name = 'files[]' multiple class = 'file-input' >
< / div >
< / form >
< div class = 'conversation-header {{ avatar.color }}' >
< div class = 'header-buttons left' >
< div class = 'vertical-align' >
< button class = 'back hide' > < / button >
< / div >
< div class = 'extension-details' >
< ul >
< li > Signal for Chrome< / li >
< li > < a href = "https://github.com/whispersystems" > Version 0.1< / a > < / li >
< li > by < a href = "http://whispersystems.org" > Open Whisper Systems< / a > < / li >
< li > < a href = "http://support.whispersystems.org/" > Need Help?< / a > < / li >
< / div >
< div class = 'header-buttons right' >
< div class = 'vertical-align' >
< div class = 'conversation-menu menu' >
< button class = 'hamburger' alt = 'conversation menu' > < / button >
< ul class = 'menu-list' >
{{#group}}
< li class = 'view-members' > {{ view-members }}< / li >
<!-- <li class='update - group'>Update group</li> -->
<!-- <li class='leave - group'>Leave group</li> -->
{{/group}}
{{^group}}
< li class = 'end-session' > {{ end-session }}< / li >
< li class = 'verify-identity' > {{ verify-identity }}< / li >
{{/group}}
< li class = 'destroy' > {{ destroy }}< / li >
< / ul >
< / div >
< / div >
< / div >
< span class = 'conversation-title' >
{{ #name }}
< span class = 'conversation-name' dir = 'auto' > {{ name }}< / span >
{{ /name }}
{{ #number }}
< span class = 'conversation-number' > {{ number }}< / span >
{{ /number }}
< / span >
{{> avatar }}
< / div >
< div class = 'main panel' >
< div class = 'discussion-container' >
< div class = 'bar-container hide' >
< div class = 'bar active progress-bar-striped progress-bar' > < / div >
< / div >
< / div >
< div class = 'bottom-bar' id = 'footer' >
< form class = 'send clearfix' >
< div class = 'attachment-previews' > < / div >
< div class = 'flex' >
< div class = 'choose-file' >
< button class = 'paperclip thumbnail' > < / button >
< input type = 'file' class = 'file-input' >
< / div >
< textarea class = 'send-message' placeholder = '{{ send-message }}' rows = '1' dir = 'auto' > < / textarea >
< div class = 'capture-audio' >
<!-- <button class='microphone'></button> -->
< / div >
< / div >
< / form >
< / div >
< / 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 = 'lightbox' >
< div class = 'content' >
< div class = 'controls' >
< a class = 'x close' alt = 'Close image.' href = '#' > < / a >
< a class = 'save' alt = 'Save as...' href = '#' > < / a >
< / div >
< img class = 'image' src = '{{ url }}' / >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'confirmation-dialog' >
< div class = "content" >
< div class = 'message' > {{ message }}< / div >
< div class = 'buttons' >
< button class = 'cancel' > {{ cancel }}< / button >
< button class = 'ok' > {{ ok }}< / button >
< / div >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'attachment-preview' >
< img src = '{{ source }}' class = 'preview' / >
< a class = 'x close' alt = 'remove attachment' href = '#' > < / a >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'hasRetry' >
{{ messageNotSent }}
< span href = '#' class = 'retry' > {{ resend }}< / span >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'message' >
{{> avatar }}
@ -44,65 +172,318 @@
< / div >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'new-group-update' >
< div class = 'conversation-header' >
< button class = 'back' > < / button >
< button class = 'send check' > < / button >
< span class = 'conversation-title' > Update group< / span >
< / div >
{{> group_info_input }}
< div class = 'container' >
< div class = 'scrollable' > < / div >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'identicon-svg' >
< svg xmlns = 'http://www.w3.org/2000/svg' width = '100' height = '100' >
< circle cx = '50' cy = '50' r = '40' fill = '{{ color }}' / >
< text text-anchor = 'middle' fill = 'white' font-size = '24px' x = '50' y = '50' baseline-shift = '-8px' >
{{ content }}
< / text >
< / svg >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'avatar' >
< span aria-hidden class = 'avatar
{{ ^avatar.url }}
{{ avatar.color }}
{{ /avatar.url }}
'
{{ #avatar.url }}
style='background-image: url("{{ avatar.url }}");'
{{ /avatar.url }}
>
{{ avatar.content }}
< / span >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'contact_pill' >
< span > {{ name }}< / span > < span class = 'remove' > x< / span >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'contact_name_and_number' >
< h3 class = 'name' dir = 'auto' > {{ title }} < / h3 >
< div class = 'number' > {{ number }}< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'contact' >
< div class = 'avatar' style = 'background-image: url({{ contact_avatar }});' > < / div >
{{> avatar }}
< div class = 'contact-details' > {{> contact_name_and_number }} < / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'new-contact' >
{{> avatar }}
< div class = 'contact-details' >
< h3 >
{{ contact_name }}
< / h3 >
< p class = 'last-message' >
{{ last_message }}
< / p >
< span class = 'last-timestamp' >
{{ last_message_timestamp }}
< / span >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'new-message-form' >
< form class = 'send message' >
< input type = 'text' name = 'number' class = 'number' placeholder = 'Phone number' >
< div class = 'send-message-area' >
< div class = 'message-composer' >
< input name = 'message' class = 'send-message' rows = '6' type = 'textarea' >
< div class = 'attachments' > Add Files < / div >
< input type = 'submit' >
< / div >
< div class = 'extension-details' >
< ul >
< li > Signal for Chrome< / li >
< li > < a href = "https://github.com/whispersystems" > Version 0.1< / a > < / li >
< li > by < a href = "http://whispersystems.org" > Open Whisper Systems< / a > < / li >
< li > < a href = "http://support.whispersystems.org/" > Need Help?< / a > < / li >
< / ul >
{{> contact_name_and_number }}
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'conversation-preview' >
{{> avatar }}
< div class = 'contact-details' >
< span class = 'last-timestamp' data-timestamp = '{{ last_message_timestamp }}' dir = 'auto' > < / span >
{{> contact_name_and_number }}
{{ #unreadCount }}
< span class = 'unread-count' > {{ unreadCount }}< / span >
{{ /unreadCount }}
{{ #last_message }}
< p class = 'last-message' dir = 'auto' > {{ last_message }} < / p >
{{ /last_message }}
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'phone-number' >
< div class = 'phone-input-form' >
< div class = 'number-container' >
< input type = 'tel' class = 'number' placeholder = "Phone Number" / >
< / div >
< / div >
< / form >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'new-group-form' >
< form class = 'send group' >
< div > < input name = 'name' class = 'name' placeholder = 'Group Name' > < / div >
< div > < input name = 'numbers' class = 'numbers' > < / div >
< div class = 'send-message-area' >
< div class = 'message-composer' >
< input class = 'send-message' rows = '6' type = 'textarea' >
< div class = 'attachments' > Add Files < / div >
< input type = 'submit' >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'file-size-modal' >
{{ file-size-warning }}
({{ limit }}{{ units }})
< / script >
< script type = 'text/x-tmpl-mustache' id = 'attachment-type-modal' >
Sorry, your attachment has a type, {{type}}, that is not currently supported.
< / script >
< script type = 'text/x-tmpl-mustache' id = 'message-detail' >
< div class = 'container' >
{{ #hasConflict }}
< div class = 'hasConflict clearfix' >
< div class = 'conflicts' >
< / div >
< div class = 'extension-details' >
< ul >
< li > Signal for Chrome< / li >
< li > < a href = "https://github.com/whispersystems" > Version 0.1< / a > < / li >
< li > by < a href = "http://whispersystems.org" > Open Whisper Systems< / a > < / li >
< li > < a href = "http://support.whispersystems.org/" > Need Help?< / a > < / li >
< / ul >
< / div >
{{ /hasConflict }}
< div class = 'message-container' > < / div >
< div class = 'info' >
< table >
{{ #errors }}
< tr >
< td class = 'label' > {{ errorLabel }}< / td >
< td > < span class = 'error-message' > {{message}}< / span > < / td >
< / tr >
{{ /errors }}
< tr >
< td class = 'label' > {{ sent }}< / td >
< td > {{ sent_at }}< / td >
< / tr >
{{ #received_at }}
< tr >
< td class = 'label' > {{ received }}< / td >
< td > {{ received_at }}< / td >
< / tr >
{{ /received_at }}
< tr > < td class = 'tofrom label' > {{tofrom}}< / td > < / tr >
< / table >
< div class = 'contacts' >
< / div >
< / div >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'group-member-list' >
< div class = 'container' > < / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'key_verification_panel' >
< div class = 'container' >
{{> key_verification }}
< p > {{> link_to_support }} < / p >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'key_verification' >
< label > {{theirIdentity}} < / label >
{{ ^their_key }}
< div class = 'placeholder' > {{ their_key_unknown }}< / div >
{{ /their_key }}
{{ #has_their_key }}
< div class = 'key' >
{{ #their_key }} < span > {{ . }}< / span > {{ /their_key }}
< / div >
{{ /has_their_key }}
< label > {{yourIdentity}} < / label >
< div class = 'key' >
{{ #your_key }} < span > {{ . }}< / span > {{ /your_key }}
< / div >
< div class = 'securityNumber' > < / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'security_number' >
< label > Security number < / label >
< div class = 'key' >
{{ #chunks }} < span > {{ . }}< / span > {{ /chunks }}
< / div >
< / script >
<!-- index -->
< script type = 'text/x-tmpl-mustache' id = 'group_info_input' >
< div class = 'group-info-input' >
< div class = 'group-avatar' >
< div class = 'choose-file attachment-previews thumbnail' >
{{> avatar }}
< / div >
< input type = 'file' name = 'avatar' class = 'file-input' >
< / div >
< input type = 'text' name = 'name' class = 'name' placeholder = 'Group Name' value = '{{ name }}' >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'new-conversation' >
< div class = 'conversation-header' >
< button class = 'back' > < / button >
< button class = 'create check hide' > < / button >
< span class = 'conversation-title' > New Message< / span >
< / div >
{{> group_info_input }}
< div class = 'container' >
< div class = 'scrollable' >
< / div >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'recipients-input' >
< div class = 'recipients-container' >
< span class = 'recipients' > < / span >
< input type = 'text' class = 'search' placeholder = '{{ placeholder }}' dir = 'auto' / >
< / div >
< div class = 'results' >
< div class = 'new-contact contact hide' > < / div >
< div class = 'contacts' > < / div >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'generic-error' >
< p > {{ message }}< / p >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'error-icon' >
< span class = 'error-icon' >
< / span >
{{ #message }}
< span class = 'error-message' > {{message}}< / span >
{{ /message }}
< / script >
< script type = 'text/x-tmpl-mustache' id = 'contact-detail' >
< div class = 'clearfix' >
{{> avatar }}
< div class = 'contact-details' >
{{ #errors }}
< div class = 'error-icon-container' >
< span class = 'error-icon' > < / span >
< / div >
{{ /errors }}
< span class = 'name' dir = 'auto' > {{ name }}< / span >
{{ #errors }}
{{ #message }}
< p class = 'error-message' > {{message}}< / p >
{{ /message }}
{{ /errors }}
< / div >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'link_to_support' >
< a href = 'http://support.whispersystems.org/hc/articles/213134107' target = '_blank' >
{{ learnMore }}
< / a >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'key-conflict-dialogue' >
< h3 class = 'header' > {{ newIdentity }}< / h3 >
< div class = 'content clearfix' >
< div class = 'clearfix' >
{{> avatar }}
< span class = 'name' > {{ name }}< / span >
< button class = 'resolve' > {{ resolve }}< / button >
< a href = '#' class = 'hideKeys hide' > {{ hideKeys }} < / a >
< a href = '#' class = 'showKeys' > {{ showKeys }} < / a >
< / div >
< div class = 'keys hide' >
< p >
{{ message }}
{{> link_to_support }}
< / p >
< / div >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'debug-log' >
< div class = 'content' >
< div >
< a class = 'x close' alt = 'close debug log' href = '#' > < / a >
< h1 > {{ title }} < / h1 >
< p > {{ debugLogExplanation }}< / p >
< / div >
< textarea rows = '5' > < / textarea >
< div class = 'buttons' >
< button class = 'grey submit' > {{ submit }}< / button >
< / div >
< div class = 'result' >
< / div >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'debug-log-link' >
< div class = 'input-group clearfix' >
< input type = 'text' class = 'link' readonly value = '{{ url }}' / >
< a class = 'open' alt = 'open in a new browser tab' target = '_blank' href = '{{ url }}' > < / a >
< / div >
< p >
< a class = 'report-link' target = '_blank'
href='https://github.com/WhisperSystems/Signal-Desktop/issues/new/'>
{{ reportIssue }}
< / a >
< / p >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'settings' >
< div class = 'content' >
< a class = 'x close' alt = 'close settings' href = '#' > < / a >
< h2 > {{ settings }}< / h2 >
< hr >
< div class = 'theme-settings' >
< h3 > Theme< / h3 >
< div >
< input type = 'radio' name = 'theme' id = 'theme-setting-android' value = 'android' >
< label for = 'theme-setting-android' > Android< / label >
< / div >
< div >
< input type = 'radio' name = 'theme' id = 'theme-setting-ios' value = 'ios' / >
< label for = 'theme-setting-ios' > iOS< / label >
< / div >
< / div >
< hr >
< div class = 'notification-settings' >
< h3 > {{ notifications }}< / h3 >
< p > {{ notificationSettingsDialog }}< / p >
< div >
< input type = 'radio' name = 'notifications' id = 'notification-setting-message' value = 'message' >
< label for = 'notification-setting-message' > {{ nameAndMessage }} < / label >
< / div >
< div >
< input type = 'radio' name = 'notifications' id = 'notification-setting-name' value = 'name' / >
< label for = 'notification-setting-name' > {{ nameOnly }} < / label >
< / div >
< div >
< input type = 'radio' name = 'notifications' id = 'notification-setting-count' value = 'count' / >
< label for = 'notification-setting-count' > {{ noNameOrMessage }} < / label >
< / div >
< div >
< input type = 'radio' name = 'notifications' id = 'notification-setting-off' value = 'off' / >
< label for = 'notification-setting-off' > {{ disableNotifications }} < / label >
< / div >
< / div >
< / div >
< / script >
< script type = 'text/x-tmpl-mustache' id = 'syncSettings' >
< hr >
< h3 > {{ sync }}< / h3 >
< div >
< button class = 'grey sync' > {{ syncNow }}< / button >
< p >
{{ syncExplanation }}
< div class = 'synced_at' >
{{ lastSynced }} {{ syncDate }} {{ syncTime }}
< / div >
< div class = 'sync_failed' > {{ syncFailed }}< / div >
< / p >
< / div >
< / form >
< / script >
< script type = "text/javascript" src = "test.js" > < / script >
< script type = "text/javascript" src = "blanket_mocha.js" > < / script >
< script type = "text/javascript" src = "../js/expire.js" > < / script >
< script type = "text/javascript" src = "../js/chromium.js" > < / script >
< script type = "text/javascript" src = "../js/components.js" > < / script >
< script type = "text/javascript" src = "../js/database.js" > < / script >
< script type = "text/javascript" src = "../js/storage.js" > < / script >
@ -113,23 +494,41 @@
< script type = "text/javascript" src = "../js/models/messages.js" data-cover > < / script >
< script type = "text/javascript" src = "../js/models/conversations.js" data-cover > < / script >
< script type = "text/javascript" src = "../js/conversation_controller.js" data-cover > < / script >
< script type = "text/javascript" src = "../js/panel_controller.js" > < / script >
< script type = 'text/javascript' src = '../js/emoji_util.js' > < / script >
< script type = "text/javascript" src = "../js/chromium.js" > < / script >
< script type = "text/javascript" src = "../js/views/whisper_view.js" data-cover > < / script >
< script type = "text/javascript" src = "../js/views/list_view.js" data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/whisper_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/debug_log_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/toast_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/attachment_preview_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/file_input_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/list_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/conversation_list_item_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/conversation_list_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/contact_list_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/new_group_update_view.js' data-cover > < / script >
< script type = "text/javascript" src = "../js/views/group_update_view.js" > < / script >
< script type = "text/javascript" src = "../js/views/attachment_view.js" > < / script >
< script type = "text/javascript" src = "../js/views/timestamp_view.js" data-cover > < / script >
< script type = "text/javascript" src = "../js/views/message_view.js" data-cover > < / script >
< script type = "text/javascript" src = "../js/views/message_list_view.js" data-cover > < / script >
< script type = "text/javascript" src = "../js/views/conversation_list_item_view.js" data-cover > < / script >
< script type = "text/javascript" src = "../js/views/conversation_list_view.js" data-cover > < / script >
< script type = "text/javascript" src = "../js/views/toast_view.js" data-cover > < / script >
< script type = "text/javascript" src = "../js/views/conversation_view.js" data-cover > < / script >
< script type = "text/javascript" src = "../js/views/new_conversation_view.js" data-cover > < / script >
< script type = "text/javascript" src = "../js/views/conversation_search_view.js" > < / script >
< script type = 'text/javascript' src = '../js/views/attachment_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/key_conflict_dialogue_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/error_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/timestamp_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/message_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/key_verification_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/message_detail_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/message_list_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/group_member_list_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/recorder_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/conversation_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/new_conversation_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/conversation_search_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/window_controls_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/hint_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/inbox_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/confirmation_dialog_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/identicon_svg_view.js' data-cover > < / script >
< script type = 'text/javascript' src = '../js/views/settings_view.js' data-cover > < / script >
< script type = "text/javascript" src = "libphonenumber_util_test.js" > < / script >
< script type = "text/javascript" src = "views/whisper_view_test.js" > < / script >
@ -141,5 +540,8 @@
< script type = "text/javascript" src = "models/conversations_test.js" > < / script >
< script type = "text/javascript" src = "models/messages_test.js" > < / script >
< script type = "text/javascript" src = "storage_test.js" > < / script >
< script type = "text/javascript" src = "fixtures.js" > < / script >
< script type = "text/javascript" src = "fixtures_test.js" > < / script >
< / body >
< / html >