Various smaller fixes
- Fix failing tests. - Bump timeout for emoji tests - Remove unused files. - Update features section.
This commit is contained in:
parent
5efb7b2a84
commit
0c5593ed75
@ -175,6 +175,7 @@
|
|||||||
<h2>Features</h2>
|
<h2>Features</h2>
|
||||||
</header>
|
</header>
|
||||||
<ul class="features">
|
<ul class="features">
|
||||||
|
<li>Converse supports many XMPP extensions.<br/>See here for a <a href="https://github.com/conversejs/converse.js#supported-xmpp-extensions" target="_blank" rel="noopener">list of supported XEPs</a>.</li>
|
||||||
<li>Available as overlayed chat boxes or as a full-page app. See <a href="https://conversejs.org/fullscreen.html" target="_blank" rel="noopener">here</a> for the fullscreen version. </li>
|
<li>Available as overlayed chat boxes or as a full-page app. See <a href="https://conversejs.org/fullscreen.html" target="_blank" rel="noopener">here</a> for the fullscreen version. </li>
|
||||||
<li>A <a href="https://conversejs.org/docs/html/plugin_development.html" target="_blank" rel="noopener">plugin architecture</a> based on <a href="https://conversejs.github.io/pluggable.js/" target="_blank" rel="noopener">pluggable.js</a></li>
|
<li>A <a href="https://conversejs.org/docs/html/plugin_development.html" target="_blank" rel="noopener">plugin architecture</a> based on <a href="https://conversejs.github.io/pluggable.js/" target="_blank" rel="noopener">pluggable.js</a></li>
|
||||||
<li>Chat statuses (online, busy, away, offline)</li>
|
<li>Chat statuses (online, busy, away, offline)</li>
|
||||||
@ -185,20 +186,14 @@
|
|||||||
<li>vCard support (<a href="https://xmpp.org/extensions/xep-0054.html" target="_blank" rel="noopener">XEP 54</a>)</li>
|
<li>vCard support (<a href="https://xmpp.org/extensions/xep-0054.html" target="_blank" rel="noopener">XEP 54</a>)</li>
|
||||||
<li>Service discovery (<a href="https://xmpp.org/extensions/xep-0030.html" target="_blank" rel="noopener">XEP 30</a>)</li>
|
<li>Service discovery (<a href="https://xmpp.org/extensions/xep-0030.html" target="_blank" rel="noopener">XEP 30</a>)</li>
|
||||||
<li>In-band registration (<a href="https://xmpp.org/extensions/xep-0077.html" target="_blank" rel="noopener">XEP 77</a>)</li>
|
<li>In-band registration (<a href="https://xmpp.org/extensions/xep-0077.html" target="_blank" rel="noopener">XEP 77</a>)</li>
|
||||||
<li>Roster item exchange (<a href="https://xmpp.org/extensions/xep-0144.html" target="_blank" rel="noopener">XEP 144</a>)</li>
|
|
||||||
<li>Custom status messages</li>
|
|
||||||
<li>Typing and chat state notifications (<a href="https://xmpp.org/extensions/xep-0085.html" target="_blank" rel="noopener">XEP 85</a>)</li>
|
<li>Typing and chat state notifications (<a href="https://xmpp.org/extensions/xep-0085.html" target="_blank" rel="noopener">XEP 85</a>)</li>
|
||||||
<li>File sharing / HTTP File Upload (<a href="https://xmpp.org/extensions/xep-0363.html" target="_blank" rel="noopener">XEP 363</a>)</li>
|
<li>File sharing / HTTP File Upload (<a href="https://xmpp.org/extensions/xep-0363.html" target="_blank" rel="noopener">XEP 363</a>)</li>
|
||||||
<li>Messages appear in all connected chat clients / Message Carbons (<a href="https://xmpp.org/extensions/xep-0280.html" target="_blank" rel="noopener">XEP 280</a>)</li>
|
|
||||||
<li>Third person "/me" messages (<a href="https://xmpp.org/extensions/xep-0245.html" target="_blank" rel="noopener">XEP 245</a>)</li>
|
|
||||||
<li>Server-side archiving of messages (<a href="https://xmpp.org/extensions/xep-0313.html" target="_blank" rel="noopener">XEP 313</a>)</li>
|
<li>Server-side archiving of messages (<a href="https://xmpp.org/extensions/xep-0313.html" target="_blank" rel="noopener">XEP 313</a>)</li>
|
||||||
<li>Hidden messages (aka Spoilers) (<a href="https://xmpp.org/extensions/xep-0382.html" target="_blank" rel="noopener">XEP 382</a>)</li>
|
<li>Hidden messages (aka Spoilers) (<a href="https://xmpp.org/extensions/xep-0382.html" target="_blank" rel="noopener">XEP 382</a>)</li>
|
||||||
<li>Client state indication (<a href="https://xmpp.org/extensions/xep-0352.html" target="_blank" rel="noopener">XEP 352</a>)</li>
|
<li>Client state indication (<a href="https://xmpp.org/extensions/xep-0352.html" target="_blank" rel="noopener">XEP 352</a>)</li>
|
||||||
<li>Last Message Correction (<a href="https://xmpp.org/extensions/xep-0308.html" target="_blank" rel="noopener">XEP 308</a>)</li>
|
|
||||||
<li>OMEMO encrypted messaging (<a href="https://xmpp.org/extensions/xep-0384.html" target="_blank" rel="noopener">XEP 384</a>)</li>
|
<li>OMEMO encrypted messaging (<a href="https://xmpp.org/extensions/xep-0384.html" target="_blank" rel="noopener">XEP 384</a>)</li>
|
||||||
<li>Anonymous logins, see the <a href="https://conversejs.org/demo/anonymous.html" target="_blank" rel="noopener">anonymous login demo</a></li>
|
<li>Anonymous logins, see the <a href="https://conversejs.org/demo/anonymous.html" target="_blank" rel="noopener">anonymous login demo</a></li>
|
||||||
<li>Message Retractions (<a href="https://xmpp.org/extensions/xep-0424.html" target="_blank" rel="noopener">XEP 424</a>)</li>
|
<li>Message corrections, retractions and moderation</li>
|
||||||
<li>Message Moderation (<a href="https://xmpp.org/extensions/xep-0425.html" target="_blank" rel="noopener">XEP 425</a>)</li>
|
|
||||||
<li>Translated into over 30 languages</li>
|
<li>Translated into over 30 languages</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -14,8 +14,7 @@ module.exports = function(config) {
|
|||||||
"dist/converse.css",
|
"dist/converse.css",
|
||||||
{ pattern: "dist/webfonts/**/*.*", included: false },
|
{ pattern: "dist/webfonts/**/*.*", included: false },
|
||||||
{ pattern: "node_modules/sinon/pkg/sinon.js", type: 'module' },
|
{ pattern: "node_modules/sinon/pkg/sinon.js", type: 'module' },
|
||||||
{ pattern: "tests/console-reporter.js", type: 'module' },
|
{ pattern: "spec/mock.js", type: 'module' },
|
||||||
{ pattern: "tests/mock.js", type: 'module' },
|
|
||||||
|
|
||||||
{ pattern: "spec/spoilers.js", type: 'module' },
|
{ pattern: "spec/spoilers.js", type: 'module' },
|
||||||
{ pattern: "spec/roomslist.js", type: 'module' },
|
{ pattern: "spec/roomslist.js", type: 'module' },
|
||||||
|
27
package-lock.json
generated
27
package-lock.json
generated
@ -4203,6 +4203,11 @@
|
|||||||
"through": ">=2.2.7 <3"
|
"through": ">=2.2.7 <3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"abab": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg=="
|
||||||
|
},
|
||||||
"abbrev": {
|
"abbrev": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||||
@ -21120,8 +21125,20 @@
|
|||||||
},
|
},
|
||||||
"strophe.js": {
|
"strophe.js": {
|
||||||
"version": "1.3.4",
|
"version": "1.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/strophe.js/-/strophe.js-1.3.4.tgz",
|
"resolved": "github:strophe/strophejs#4556d1d87b9a7650b52a2bc2cc055a97f9801cb5",
|
||||||
"integrity": "sha512-jSLDG8jolhAwGOSgiJ7DTMSYK3wVoEJHKtpVRyEacQZ6CWA6z2WRPJpcFMjsIweq5aP9/XIvKUQqHBu/ZhvESA=="
|
"requires": {
|
||||||
|
"abab": "^2.0.0",
|
||||||
|
"ws": "^7.0.0",
|
||||||
|
"xmldom": "^0.1.27"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ws": {
|
||||||
|
"version": "7.2.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/ws/-/ws-7.2.5.tgz",
|
||||||
|
"integrity": "sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==",
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"style-loader": {
|
"style-loader": {
|
||||||
"version": "0.23.1",
|
"version": "0.23.1",
|
||||||
@ -22894,6 +22911,12 @@
|
|||||||
"integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==",
|
"integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"xmldom": {
|
||||||
|
"version": "0.1.31",
|
||||||
|
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
|
||||||
|
"integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==",
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
"xmlhttprequest-ssl": {
|
"xmlhttprequest-ssl": {
|
||||||
"version": "1.5.5",
|
"version": "1.5.5",
|
||||||
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
|
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
|
||||||
|
@ -2,10 +2,14 @@
|
|||||||
|
|
||||||
const { Promise, $msg, $pres, sizzle } = converse.env;
|
const { Promise, $msg, $pres, sizzle } = converse.env;
|
||||||
const u = converse.env.utils;
|
const u = converse.env.utils;
|
||||||
|
const originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
|
||||||
|
|
||||||
describe("Emojis", function () {
|
describe("Emojis", function () {
|
||||||
describe("The emoji picker", function () {
|
describe("The emoji picker", function () {
|
||||||
|
|
||||||
|
beforeEach(() => (jasmine.DEFAULT_TIMEOUT_INTERVAL = 7000));
|
||||||
|
afterEach(() => (jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout));
|
||||||
|
|
||||||
it("can be opened by clicking a button in the chat toolbar",
|
it("can be opened by clicking a button in the chat toolbar",
|
||||||
mock.initConverse(
|
mock.initConverse(
|
||||||
['rosterGroupsFetched', 'chatBoxesFetched'], {},
|
['rosterGroupsFetched', 'chatBoxesFetched'], {},
|
||||||
|
@ -4754,7 +4754,7 @@ describe("Groupchats", function () {
|
|||||||
|
|
||||||
await u.waitUntil(() => modal.el.querySelectorAll('.available-chatrooms li').length === 11);
|
await u.waitUntil(() => modal.el.querySelectorAll('.available-chatrooms li').length === 11);
|
||||||
const rooms = modal.el.querySelectorAll('.available-chatrooms li');
|
const rooms = modal.el.querySelectorAll('.available-chatrooms li');
|
||||||
expect(rooms[0].textContent.trim()).toBe("Groupchats found:");
|
expect(rooms[0].textContent.trim()).toBe("Groupchats found");
|
||||||
expect(rooms[1].textContent.trim()).toBe("A Lonely Heath");
|
expect(rooms[1].textContent.trim()).toBe("A Lonely Heath");
|
||||||
expect(rooms[2].textContent.trim()).toBe("A Dark Cave");
|
expect(rooms[2].textContent.trim()).toBe("A Dark Cave");
|
||||||
expect(rooms[3].textContent.trim()).toBe("The Palace");
|
expect(rooms[3].textContent.trim()).toBe("The Palace");
|
||||||
@ -4832,7 +4832,7 @@ describe("Groupchats", function () {
|
|||||||
|
|
||||||
await u.waitUntil(() => modal.el.querySelectorAll('.available-chatrooms li').length === 4);
|
await u.waitUntil(() => modal.el.querySelectorAll('.available-chatrooms li').length === 4);
|
||||||
const rooms = modal.el.querySelectorAll('.available-chatrooms li');
|
const rooms = modal.el.querySelectorAll('.available-chatrooms li');
|
||||||
expect(rooms[0].textContent.trim()).toBe("Groupchats found:");
|
expect(rooms[0].textContent.trim()).toBe("Groupchats found");
|
||||||
expect(rooms[1].textContent.trim()).toBe("A Lonely Heath");
|
expect(rooms[1].textContent.trim()).toBe("A Lonely Heath");
|
||||||
expect(rooms[2].textContent.trim()).toBe("A Dark Cave");
|
expect(rooms[2].textContent.trim()).toBe("A Dark Cave");
|
||||||
expect(rooms[3].textContent.trim()).toBe("The Palace");
|
expect(rooms[3].textContent.trim()).toBe("The Palace");
|
||||||
|
@ -1,140 +0,0 @@
|
|||||||
const noopTimer = {
|
|
||||||
start: function () {},
|
|
||||||
elapsed: function () { return 0; }
|
|
||||||
};
|
|
||||||
|
|
||||||
function ConsoleReporter () {
|
|
||||||
var timer = noopTimer,
|
|
||||||
specCount,
|
|
||||||
failureCount,
|
|
||||||
failedSpecs = [],
|
|
||||||
pendingCount,
|
|
||||||
ansi = {
|
|
||||||
green: '\x1B[32m',
|
|
||||||
red: '\x1B[31m',
|
|
||||||
yellow: '\x1B[33m',
|
|
||||||
none: '\x1B[0m'
|
|
||||||
},
|
|
||||||
failedSuites = [];
|
|
||||||
|
|
||||||
var print = function print (message) {
|
|
||||||
console.log(message + '\x03\b');
|
|
||||||
}
|
|
||||||
|
|
||||||
this.jasmineStarted = function () {
|
|
||||||
specCount = 0;
|
|
||||||
failureCount = 0;
|
|
||||||
pendingCount = 0;
|
|
||||||
print('Started');
|
|
||||||
printNewline();
|
|
||||||
timer.start();
|
|
||||||
};
|
|
||||||
|
|
||||||
this.jasmineDone = function () {
|
|
||||||
print("jasmineDone");
|
|
||||||
printNewline();
|
|
||||||
for (var i = 0; i < failedSpecs.length; i++) {
|
|
||||||
specFailureDetails(failedSpecs[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(specCount > 0) {
|
|
||||||
printNewline();
|
|
||||||
var specCounts = specCount + ' ' + plural('spec', specCount) + ', ' +
|
|
||||||
failureCount + ' ' + plural('failure', failureCount);
|
|
||||||
if (pendingCount) {
|
|
||||||
specCounts += ', ' + pendingCount + ' pending ' + plural('spec', pendingCount);
|
|
||||||
}
|
|
||||||
print(specCounts);
|
|
||||||
} else {
|
|
||||||
print('No specs found');
|
|
||||||
}
|
|
||||||
|
|
||||||
printNewline();
|
|
||||||
var seconds = timer.elapsed() / 1000;
|
|
||||||
print('Finished in ' + seconds + ' ' + plural('second', seconds));
|
|
||||||
printNewline();
|
|
||||||
for (i = 0; i < failedSuites.length; i++) {
|
|
||||||
suiteFailureDetails(failedSuites[i]);
|
|
||||||
}
|
|
||||||
var exitCode = failureCount === 0 ? 0 : 1;
|
|
||||||
console.info('All tests completed!' + exitCode);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.specDone = function (result) {
|
|
||||||
specCount++;
|
|
||||||
if (result.status == 'pending') {
|
|
||||||
pendingCount++;
|
|
||||||
print(colored('yellow', '*'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (result.status == 'passed') {
|
|
||||||
print(colored('green', '.'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (result.status == 'failed') {
|
|
||||||
failureCount++;
|
|
||||||
failedSpecs.push(result);
|
|
||||||
print(colored('red', 'F'));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.suiteDone = function (result) {
|
|
||||||
if (result.failedExpectations && result.failedExpectations.length > 0) {
|
|
||||||
failureCount++;
|
|
||||||
failedSuites.push(result);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return this;
|
|
||||||
|
|
||||||
function printNewline() {
|
|
||||||
print('\n');
|
|
||||||
}
|
|
||||||
|
|
||||||
function colored (color, str) {
|
|
||||||
return ansi[color] + str + ansi.none;
|
|
||||||
}
|
|
||||||
|
|
||||||
function plural (str, count) {
|
|
||||||
return count == 1 ? str : str + 's';
|
|
||||||
}
|
|
||||||
|
|
||||||
function repeat (thing, times) {
|
|
||||||
var arr = [];
|
|
||||||
for (var i = 0; i < times; i++) {
|
|
||||||
arr.push(thing);
|
|
||||||
}
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
|
|
||||||
function indent (str, spaces) {
|
|
||||||
var lines = (str || '').split('\n');
|
|
||||||
var newArr = [];
|
|
||||||
for (var i = 0; i < lines.length; i++) {
|
|
||||||
newArr.push(repeat(' ', spaces).join('') + lines[i]);
|
|
||||||
}
|
|
||||||
return newArr.join('\n');
|
|
||||||
}
|
|
||||||
|
|
||||||
function specFailureDetails (result) {
|
|
||||||
printNewline();
|
|
||||||
print(result.fullName);
|
|
||||||
for (var i = 0; i < result.failedExpectations.length; i++) {
|
|
||||||
var failedExpectation = result.failedExpectations[i];
|
|
||||||
printNewline();
|
|
||||||
print(indent(failedExpectation.message, 2));
|
|
||||||
print(indent(failedExpectation.stack, 2));
|
|
||||||
}
|
|
||||||
printNewline();
|
|
||||||
}
|
|
||||||
|
|
||||||
function suiteFailureDetails (result) {
|
|
||||||
for (var i = 0; i < result.failedExpectations.length; i++) {
|
|
||||||
printNewline();
|
|
||||||
print(colored('red', 'An error was thrown in an afterAll'));
|
|
||||||
printNewline();
|
|
||||||
print(colored('red', 'AfterAll ' + result.failedExpectations[i].message));
|
|
||||||
}
|
|
||||||
printNewline();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
window.ConsoleReporter = ConsoleReporter;
|
|
@ -1,23 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
||||||
"http://www.w3.org/TR/html4/loose.dtd">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Converse Tests</title>
|
|
||||||
<meta name="description" content="Converse XMPP Chat" />
|
|
||||||
<link rel="shortcut icon" type="image/png" href="../node_modules/jasmine-core/images/jasmine_favicon.png">
|
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" media="screen" href="../node_modules/jasmine-core/lib/jasmine-core/jasmine.css">
|
|
||||||
<link type="text/css" rel="stylesheet" media="screen" href="../css/converse.css" />
|
|
||||||
<script src="../dist/converse.js"></script>
|
|
||||||
<script src="../src/config.js"></script>
|
|
||||||
<script type="text/javascript">window.view_mode = 'fullscreen';</script>
|
|
||||||
<script data-main="runner" src="../node_modules/requirejs/require.js"></script>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
overflow-y: hidden;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body></body>
|
|
||||||
</html>
|
|
Loading…
Reference in New Issue
Block a user