Skip to content

Commit 35b65ec

Browse files
committed
Chat improvements, more e2e tests
1 parent 9127f96 commit 35b65ec

26 files changed

+175
-282
lines changed

TODO.txt

+2-8
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,10 @@ cross browser compatability / mobile
66
npm i on windows
77

88

9-
destination path 'jeelizFaceFilter' already exists and is not an empty directory.
10-
11-
easy way to set up CI?
12-
13-
brief avatar flash in header
14-
15-
block geo location request, see error when open snapmap
16-
179
toolbar layout breaks in e2e browser
1810

11+
showDrawer -> openDrawer
12+
1913

2014
--
2115

cypress.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
{}
1+
{
2+
"viewportWidth": 414,
3+
"viewportHeight": 736,
4+
"waitForAnimations": true
5+
}

cypress/fixtures/example.json

-5
This file was deleted.

cypress/fixtures/message.json

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"author": "Lisa",
3+
"message": "Soooo, how was it!?"
4+
}

cypress/fixtures/profile.json

-5
This file was deleted.

cypress/fixtures/users.json

-232
This file was deleted.

cypress/integration/archive.spec.ts

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/// <reference types="cypress" />
2+
3+
describe('Archive', () => {
4+
beforeEach(() => {
5+
cy.loadApp();
6+
cy.get('[data-test=archive-btn]').click();
7+
cy.get('[data-test=archive-drawer]').as('archiveDrawer');
8+
});
9+
10+
it('loads default set of items', () => {
11+
cy.get('@archiveDrawer').find('[data-test=month]').should('have.length', 3);
12+
cy.get('@archiveDrawer').find('[data-test=snap-image]').should('have.length', 6);
13+
});
14+
});

cypress/integration/chat.spec.ts

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/// <reference types="cypress" />
2+
3+
describe('Chat', () => {
4+
beforeEach(() => {
5+
cy.loadApp();
6+
cy.get('[data-test=btn-chat]').click();
7+
cy.get('[data-test=chat-drawer]').as('chatDrawer');
8+
cy.get('@chatDrawer').find('[data-test=input-field]').as('chatField');
9+
cy.wait(1000); // Default message is received after 1 second
10+
});
11+
12+
it('recieves default message on opening drawer', () => {
13+
cy.fixture('message').then(({ author, message }) => {
14+
cy.getLastMessage(true).should('equal', author);
15+
cy.getLastMessage().should('equal', message);
16+
});
17+
});
18+
19+
it("can't send empty message", () => {
20+
cy.get('@chatField').type('{enter}');
21+
cy.getLastMessage().should('not.have.length', 0);
22+
});
23+
24+
it('can send message', () => {
25+
const msg = 'abc';
26+
cy.get('@chatField').type(msg).type('{enter}');
27+
cy.getLastMessage().should('equal', msg);
28+
});
29+
30+
it('receives a message for every message sent', () => {
31+
const msg = 'abc';
32+
cy.get('@chatField').type(msg).type('{enter}');
33+
cy.wait(5000);
34+
cy.getLastMessage(true).should('equal', 'Lisa');
35+
cy.get('@chatField').type(msg).type('{enter}');
36+
cy.get('@chatField').type(msg).type('{enter}');
37+
cy.wait(5000);
38+
cy.getLastMessage(true).should('equal', 'Lisa');
39+
cy.wait(5000);
40+
cy.get('@chatDrawer').find('[data-test=message]').last().prev().as('lastMessage');
41+
cy.get('@lastMessage').find('header').invoke('text').should('equal', 'Lisa');
42+
});
43+
});

cypress/integration/discover.spec.ts

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/// <reference types="cypress" />
2+
3+
describe('Discover', () => {
4+
beforeEach(() => {
5+
cy.loadApp();
6+
cy.get('[data-test=discover-btn]').click();
7+
cy.get('[data-test=discover-drawer]').as('discoverDrawer');
8+
});
9+
10+
it('loads default set of items', () => {
11+
cy.get('@discoverDrawer').find('[data-test=discover-item]').should('have.length', 8);
12+
});
13+
14+
it('infinite scroll works', () => {
15+
cy.get('@discoverDrawer').find('[data-test=drawer-content]').scrollTo('bottom');
16+
cy.get('@discoverDrawer').find('[data-test=discover-item]').should('have.length', 16);
17+
cy.get('@discoverDrawer').find('[data-test=drawer-content]').scrollTo('bottom');
18+
cy.get('@discoverDrawer').find('[data-test=discover-item]').should('have.length', 24);
19+
});
20+
});

cypress/integration/snap-map.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ describe('Snap Map', () => {
2525
cy.get('@snapMapDrawer').find('[data-test=marker]').first().click();
2626
cy.get('[data-test=snap-drawer]').as('snapDrawer');
2727
cy.get('@snapDrawer').find('[data-test=snap]').click();
28-
cy.wait(300);
28+
// cy.wait(300);
2929
cy.get('@snapDrawer').should('not.be.visible');
3030
});
3131

-531 KB
Binary file not shown.

cypress/support/commands.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,12 @@
2828

2929
Cypress.Commands.add('loadApp', () => {
3030
cy.visit('https://localhost:3000/');
31-
cy.viewport(414, 840);
31+
});
32+
33+
Cypress.Commands.add('getLastMessage', (getAuthor) => {
34+
cy.get('[data-test=chat-drawer]').find('[data-test=message]').last().as('lastMessage');
35+
const elem = getAuthor
36+
? cy.get('@lastMessage').find('header')
37+
: cy.get('@lastMessage').find('blockquote');
38+
return elem.invoke('text');
3239
});

cypress/support/index.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
declare namespace Cypress {
44
interface Chainable {
55
loadApp(): Chainable<void>;
6+
getLastMessage(getAuthor?: boolean): Chainable<Element>;
67
}
78
}

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
"test": "react-scripts test",
3434
"e2e": "cypress open",
3535
"eject": "react-scripts eject",
36-
"postinstall": "cd public/filters && npm i && git clone [email protected]:jeeliz/jeelizFaceFilter.git && cd jeelizFaceFilter && git reset --hard bd3cdcd0ca01ced09d836c55af82c36047d82dac && cd .. && npm run gulp",
37-
"cleanup": "rm -rf node_modules && cd public/filters && rm -rf node_modules jeelizFaceFilter build",
36+
"postinstall": "if [ ! -d 'public/filters/jeelizFaceFilter' ]; then cd public/filters && npm i && git clone [email protected]:jeeliz/jeelizFaceFilter.git && cd jeelizFaceFilter && git reset --hard bd3cdcd0ca01ced09d836c55af82c36047d82dac && cd .. && npm run gulp; fi",
37+
"cleanup": "rm -rf node_modules && cd public/filters && rm -rf node_modules jeelizFaceFilter build coverage",
3838
"precommit": "pretty-quick --staged && react-scripts test --watchAll=false",
3939
"storybook": "start-storybook -p 6006",
4040
"build-storybook": "build-storybook",

public/images/thought-bubble.png

4.01 KB
Loading

0 commit comments

Comments
 (0)