Skip to content

Commit a6e940b

Browse files
committed
fix(StatementForm): broken update
1 parent 2af3ee9 commit a6e940b

File tree

8 files changed

+77
-10
lines changed

8 files changed

+77
-10
lines changed

.github/workflows/e2e.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,12 @@ jobs:
7676
- name: Start E2E tests
7777
working-directory: api
7878
run: ./scripts/run_e2e_ci.sh
79+
# Upload Cypress artifacts
80+
- name: Upload Cypress screenshots
81+
if: always()
82+
uses: actions/upload-artifact@v4
83+
with:
84+
name: cypress-screenshots
85+
path: frontend/cypress/screenshots
86+
retention-days: 7
87+
if-no-files-found: ignore

app/components/Statements/Statement.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default class Statement extends React.PureComponent {
1717
const { statement, speaker, handleEdit, handleDelete, withoutActions, offset = 0 } = this.props
1818

1919
return (
20-
<div>
20+
<div data-cy="statement">
2121
<StatementHeader
2222
statementTime={statement.time + offset}
2323
isDraft={statement.is_draft}

app/components/Statements/StatementForm.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ export class StatementForm extends React.Component {
117117

118118
return (
119119
<form
120+
data-cy="statement-form"
120121
ref={this.containerRef}
121122
onSubmit={handleSubmit(this.handleSubmit)}
122123
className={cn('bg-white rounded-lg shadow-lg border border-gray-200', {

app/components/VideoDebate/ActionBubbleMenu.jsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,14 @@ export const ActionBubble = ({
139139
...props
140140
}) => (
141141
<div
142+
role="button"
143+
tabIndex={0}
144+
onKeyDown={(e) => {
145+
if (e.key === 'Enter' || e.key === ' ') {
146+
props.onClick?.()
147+
}
148+
}}
149+
data-cy="action-bubble"
142150
className={cn(
143151
'mb-2 first:mb-0 transition-all duration-300',
144152
'cursor-pointer shadow-md hover:shadow-lg right-0',

cypress.config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ const { defineConfig } = require('cypress')
33
module.exports = defineConfig({
44
projectId: 'iivzis',
55
videoUploadOnPasses: false,
6+
screenshotOnRunFailure: true,
7+
screenshotsFolder: 'cypress/screenshots',
68
env: {
79
CYPRESS_API_URL: 'http://localhost:4000',
810
CYPRESS_USERNAME: 'Captain',
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
describe('Can add and edit statements', () => {
2+
it('adds a new statement, edits it, then deletes it', () => {
3+
const statementText = `Cypress statement ${Date.now()}`
4+
const updatedStatementText = `${statementText} - edited`
5+
6+
cy.login().then(() => {
7+
cy.visit('/videos/Jzqg')
8+
9+
// Add a statement
10+
cy.contains('[data-cy="action-bubble"]', 'Add a Statement').click()
11+
cy.get('[data-cy="statement-form"] textarea[name="text"]').type(statementText)
12+
cy.contains('button[type=submit]', 'Save').click()
13+
14+
cy.contains('A speaker should be added. To continue without one, press "Save".').should(
15+
'exist',
16+
)
17+
cy.contains('button[type=submit]', 'Save').click()
18+
cy.contains('[data-cy="statement"]', statementText, { timeout: 15000 }).should('exist')
19+
20+
// Edit
21+
cy.contains('[data-cy="statement"]', statementText)
22+
.find('button[aria-haspopup="menu"]')
23+
.click()
24+
cy.contains('[role="menuitem"]', 'Edit').click()
25+
cy.get('[data-cy="statement-form"]:first textarea[name="text"]').should('be.visible')
26+
cy.get('[data-cy="statement-form"]:first textarea[name="text"]').clear()
27+
cy.get('[data-cy="statement-form"]:first textarea[name="text"]').type(updatedStatementText)
28+
cy.contains('button[type=submit]', 'Save').click()
29+
30+
cy.contains('A speaker should be added. To continue without one, press "Save".').should(
31+
'exist',
32+
)
33+
cy.contains('button[type=submit]', 'Save').click()
34+
35+
// Remove
36+
cy.contains('[data-cy="statement"]', updatedStatementText, { timeout: 15000 }).should('exist')
37+
cy.contains('[data-cy="statement"]', updatedStatementText)
38+
.find('button[aria-haspopup="menu"]')
39+
.click()
40+
cy.contains('[role="menuitem"]', 'Remove').click()
41+
cy.contains('[role="alertdialog"] button', 'Remove').click()
42+
cy.contains('[data-cy="statement"]', updatedStatementText, { timeout: 15000 }).should(
43+
'not.exist',
44+
)
45+
})
46+
})
47+
})

package-lock.json

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@
115115
"reactjs-popup": "~2.0.6",
116116
"redux": "~4.2.1",
117117
"redux-actions": "~2.6.5",
118-
"redux-form": "8.3.10",
118+
"redux-form": "8.3.9",
119119
"redux-promise": "~0.6.0",
120120
"redux-thunk": "~2.3.0",
121121
"remark-gfm": "4.0.1",

0 commit comments

Comments
 (0)