Files
f7_talk/tests/integration/features/conversation-1/breakout-rooms.feature
glb_adm 01acfa3b40
Type checking / changes (push) Has been cancelled
Type checking / test (push) Has been cancelled
Type checking / typescript-summary (push) Has been cancelled
Node tests / changes (push) Has been cancelled
Node tests / test (push) Has been cancelled
Node tests / test-summary (push) Has been cancelled
UPSTREAM BASELINE: nextcloud/spreed v22.0.12 (без изменений)
Источник: https://github.com/nextcloud/spreed/archive/refs/tags/v22.0.12.tar.gz
С этого коммита ветка официального Nextcloud Talk отрезана (решение владельца 2026-07-06).
Все дальнейшие изменения — только наши; версии релизов: 22.0.12-f7.N.
2026-07-06 14:07:50 +00:00

878 lines
55 KiB
Gherkin

Feature: conversation/breakout-rooms
Background:
Given user "participant1" exists
Given user "participant2" exists
Given user "participant3" exists
Given user "participant4" exists
Given group "group1" exists
Scenario: Teacher creates manual breakout rooms
Given signaling server is started
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" adds user "participant3" to room "class room" with 200 (v4)
And user "participant1" adds user "participant4" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
| users | participant3 | 3 |
| users | participant4 | 3 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
| users::participant3 | 1 |
| users::participant4 | 2 |
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
Then user "participant3" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 2 |
Then user "participant4" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 3 |
And user "participant1" sees the following attendees in breakout rooms for room "class room" with 200 (v4)
| roomToken | actorType | actorId | participantType |
| class room | users | participant1 | 1 |
| class room | users | participant2 | 3 |
| class room | users | participant3 | 3 |
| class room | users | participant4 | 3 |
| Room 1 | users | participant1 | 1 |
| Room 1 | users | participant2 | 3 |
| Room 2 | users | participant1 | 1 |
| Room 2 | users | participant3 | 3 |
| Room 3 | users | participant1 | 1 |
| Room 3 | users | participant4 | 3 |
And user "participant2" sees the following attendees in breakout rooms for room "class room" with 400 (v4)
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
And user "participant2" sees the following attendees in breakout rooms for room "class room" with 200 (v4)
| roomToken | actorType | actorId | participantType |
| class room | users | participant1 | 1 |
| class room | users | participant2 | 3 |
| class room | users | participant3 | 3 |
| class room | users | participant4 | 3 |
| Room 1 | users | participant1 | 1 |
| Room 1 | users | participant2 | 3 |
And user "participant2" joins room "class room" with 200 (v4)
And user "participant3" joins room "class room" with 200 (v4)
And user "participant4" joins room "class room" with 200 (v4)
And reset signaling server requests
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
Then signaling server received the following requests
| token | data |
| Room 1 | {"type":"update","update":{"userids":["participant1","participant2"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
| Room 2 | {"type":"update","update":{"userids":["participant1","participant3"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
| Room 3 | {"type":"update","update":{"userids":["participant1","participant4"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
| class room | {"type":"switchto","switchto":{"roomid":"ROOM(Room 1)","sessions":["SESSION(participant2)"]}} |
| class room | {"type":"switchto","switchto":{"roomid":"ROOM(Room 2)","sessions":["SESSION(participant3)"]}} |
| class room | {"type":"switchto","switchto":{"roomid":"ROOM(Room 3)","sessions":["SESSION(participant4)"]}} |
| class room | {"type":"update","update":{"userids":["participant1","participant2","participant3","participant4"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
And user "participant2" leaves room "class room" with 200 (v4)
And user "participant3" leaves room "class room" with 200 (v4)
And user "participant4" leaves room "class room" with 200 (v4)
And user "participant2" joins room "Room 1" with 200 (v4)
And user "participant3" joins room "Room 2" with 200 (v4)
And user "participant4" joins room "Room 3" with 200 (v4)
And reset signaling server requests
And user "participant1" stops breakout rooms in room "class room" with 200 (v1)
Then signaling server received the following requests
| token | data |
| Room 1 | {"type":"switchto","switchto":{"roomid":"ROOM(class room)","sessions":["SESSION(participant2)"]}} |
| Room 2 | {"type":"switchto","switchto":{"roomid":"ROOM(class room)","sessions":["SESSION(participant3)"]}} |
| Room 3 | {"type":"switchto","switchto":{"roomid":"ROOM(class room)","sessions":["SESSION(participant4)"]}} |
| class room | {"type":"update","update":{"userids":["participant1","participant2","participant3","participant4"],"properties":{"name":"Private conversation","type":2,"lobby-state":0,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
| Room 1 | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} |
| Room 1 | {"type":"update","update":{"userids":["participant1","participant2"],"properties":{"name":"Private conversation","type":2,"lobby-state":1,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
| Room 2 | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} |
| Room 2 | {"type":"update","update":{"userids":["participant1","participant3"],"properties":{"name":"Private conversation","type":2,"lobby-state":1,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
| Room 3 | {"type":"message","message":{"data":{"type":"chat","chat":{"refresh":true}}}} |
| Room 3 | {"type":"update","update":{"userids":["participant1","participant4"],"properties":{"name":"Private conversation","type":2,"lobby-state":1,"lobby-timer":null,"read-only":0,"listable":0,"active-since":null,"sip-enabled":0,"description":""}}} |
Scenario: Teacher creates automatic breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" adds user "participant3" to room "class room" with 200 (v4)
And user "participant1" adds user "participant4" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
| users | participant3 | 3 |
| users | participant4 | 3 |
When user "participant1" creates 3 automatic breakout rooms for "class room" with 200 (v1)
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
And user "participant1" sees the following attendees in room "Room 1" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | /^participant\d$/ | 3 |
And user "participant1" sees the following attendees in room "Room 2" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | /^participant\d$/ | 3 |
And user "participant1" sees the following attendees in room "Room 3" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | /^participant\d$/ | 3 |
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | /^Room \d$/ |
Then user "participant3" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | /^Room \d$/ |
Then user "participant4" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | /^Room \d$/ |
Scenario: Co-teachers are promoted and removed in all breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
When user "participant1" promotes "participant2" in room "class room" with 200 (v4)
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
And user "participant1" sees the following attendees in room "Room 1" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 2 |
And user "participant1" sees the following attendees in room "Room 2" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 2 |
And user "participant1" sees the following attendees in room "Room 3" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 2 |
When user "participant1" demotes "participant2" in room "class room" with 200 (v4)
Then user "participant2" is participant of the following rooms (v4)
| type | name |
| 2 | class room |
And user "participant1" sees the following attendees in room "Room 1" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
And user "participant1" sees the following attendees in room "Room 2" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
And user "participant1" sees the following attendees in room "Room 3" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
Scenario: Can not nest breakout rooms
When user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
And user "participant1" creates 3 manual breakout rooms for "Room 1" with 400 (v1)
Scenario: Can not create breakout rooms in one-to-one
When user "participant1" creates room "one-to-one room" (v4)
| roomType | 1 |
| invite | participant2 |
And user "participant1" creates 3 manual breakout rooms for "one-to-one room" with 400 (v1)
Scenario: Can not create more than 20 breakout rooms
When user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 21 manual breakout rooms for "class room" with 400 (v1)
Scenario: Can not create less than 1 breakout rooms
When user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 0 manual breakout rooms for "class room" with 400 (v1)
Scenario: Invalid breakout room number in attendee map (low)
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 400 (v1)
| users::participant2 | -1 |
Scenario: Invalid breakout room number in attendee map (high)
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 400 (v1)
| users::participant2 | 4 |
Scenario: Breakout rooms are disabled
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And the following "spreed" app config is set
| breakout_rooms | no |
When user "participant1" creates 3 manual breakout rooms for "class room" with 400 (v1)
| users::participant2 | 1 |
Scenario: Broadcast chat message to all breakout room
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
And user "participant1" broadcasts message "Hello rooms 1-3" to room "class room" with 201 (v1)
Then user "participant1" sees the following messages in room "Room 1" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| Room 1 | users | participant1 | participant1-displayname | Hello rooms 1-3 | [] |
Then user "participant1" sees the following messages in room "Room 2" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| Room 2 | users | participant1 | participant1-displayname | Hello rooms 1-3 | [] |
Then user "participant1" sees the following messages in room "Room 3" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters |
| Room 3 | users | participant1 | participant1-displayname | Hello rooms 1-3 | [] |
Scenario: Can not broadcast chat message in a non-breakout room
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" broadcasts message "Does not work" to room "room" with 400 (v1)
Scenario: Can not start in a non-breakout room
Given user "participant1" creates room "room" (v4)
| roomType | 2 |
| roomName | room |
And user "participant1" starts breakout rooms in room "room" with 400 (v1)
And user "participant1" stops breakout rooms in room "room" with 400 (v1)
Scenario: Moderator starts and stops breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
| 2 | Room 3 | 1 | 0 | 0 |
Then user "participant1" sees the following system messages in room "Room 1" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 1 | users | participant1 | participant1-displayname | conversation_created |
Then user "participant1" sees the following system messages in room "Room 2" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 2 | users | participant1 | participant1-displayname | conversation_created |
Then user "participant1" sees the following system messages in room "Room 3" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 3 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 1 |
| 2 | Room 1 | 0 | 0 | 0 |
| 2 | Room 2 | 0 | 0 | 0 |
| 2 | Room 3 | 0 | 0 | 0 |
Then user "participant1" sees the following system messages in room "Room 1" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 1 | users | participant1 | participant1-displayname | breakout_rooms_started |
| Room 1 | users | participant1 | participant1-displayname | conversation_created |
Then user "participant1" sees the following system messages in room "Room 2" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 2 | users | participant1 | participant1-displayname | breakout_rooms_started |
| Room 2 | users | participant1 | participant1-displayname | conversation_created |
Then user "participant1" sees the following system messages in room "Room 3" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 3 | users | participant1 | participant1-displayname | breakout_rooms_started |
| Room 3 | users | participant1 | participant1-displayname | conversation_created |
And user "participant1" stops breakout rooms in room "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
| 2 | Room 3 | 1 | 0 | 0 |
Then user "participant1" sees the following system messages in room "Room 1" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 1 | users | participant1 | participant1-displayname | breakout_rooms_stopped |
| Room 1 | users | participant1 | participant1-displayname | breakout_rooms_started |
| Room 1 | users | participant1 | participant1-displayname | conversation_created |
Then user "participant1" sees the following system messages in room "Room 2" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 2 | users | participant1 | participant1-displayname | breakout_rooms_stopped |
| Room 2 | users | participant1 | participant1-displayname | breakout_rooms_started |
| Room 2 | users | participant1 | participant1-displayname | conversation_created |
Then user "participant1" sees the following system messages in room "Room 3" with 200
| room | actorType | actorId | actorDisplayName | systemMessage |
| Room 3 | users | participant1 | participant1-displayname | breakout_rooms_stopped |
| Room 3 | users | participant1 | participant1-displayname | breakout_rooms_started |
| Room 3 | users | participant1 | participant1-displayname | conversation_created |
Scenario: Request assistance and cancel it
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
When user "participant1" creates 1 automatic breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
And user "participant2" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 1 |
| 2 | Room 1 | 0 | 0 | 0 |
And user "participant2" requests assistance in room "Room 1" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 1 |
| 2 | Room 1 | 0 | 0 | 2 |
And user "participant2" cancels request for assistance in room "Room 1" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 1 |
| 2 | Room 1 | 0 | 0 | 0 |
And user "participant2" requests assistance in room "Room 1" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 1 |
| 2 | Room 1 | 0 | 0 | 2 |
And user "participant1" cancels request for assistance in room "Room 1" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 1 |
| 2 | Room 1 | 0 | 0 | 0 |
Scenario: Teacher creates free breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 2 free breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 3 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
Then user "participant2" sees the following breakout rooms for room "class room" with 404 (v4)
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
Then user "participant2" sees the following breakout rooms for room "class room" with 400 (v4)
Then user "participant1" sees the following breakout rooms for room "class room" with 200 (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
Then user "participant2" sees the following breakout rooms for room "class room" with 200 (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | Room 1 | 0 | 0 | 0 |
| 2 | Room 2 | 0 | 0 | 0 |
Scenario: Student can only get their own breakout room when non-free
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
Then user "participant1" sees the following breakout rooms for room "class room" with 200 (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
| 2 | Room 3 | 1 | 0 | 0 |
Then user "participant2" sees the following breakout rooms for room "class room" with 400 (v4)
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
Then user "participant2" sees the following breakout rooms for room "class room" with 200 (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | Room 1 | 0 | 0 | 0 |
Scenario: Teachers can not "switch" breakout rooms as they are in all of them
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 2 free breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 3 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
When user "participant1" switches in room "class room" to breakout room "Room 1" with 400 (v1)
Scenario: Student switching breakout room in free selection
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 2 free breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 3 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
Then user "participant2" is participant of the following rooms (v4)
| type | name |
| 2 | class room |
When user "participant2" switches in room "class room" to breakout room "Room 1" with 400 (v1)
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
When user "participant2" switches in room "class room" to breakout room "Room 1" with 200 (v1)
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
When user "participant2" switches in room "class room" to breakout room "Room 2" with 200 (v1)
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 2 |
Scenario: Student can not switch on manual breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" creates 2 manual breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
When user "participant2" switches in room "class room" to breakout room "Room 1" with 400 (v1)
Scenario: Student can not switch on automatic breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
Then user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
When user "participant2" switches in room "class room" to breakout room "Room 1" with 400 (v1)
Scenario: Deleting the parent also deletes all breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
When user "participant1" deletes room "class room" with 200 (v4)
And user "participant1" is participant of the following rooms (v4)
And user "participant2" is participant of the following rooms (v4)
Scenario: Removing breakout rooms also stops them on the parent
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 0 | 0 |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 1 |
| 2 | Room 1 | 0 | 0 | 0 |
| 2 | Room 2 | 0 | 0 | 0 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
When user "participant1" removes breakout rooms from "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 0 | 0 |
Scenario: Deleting a single breakout room unassigned the students from the mapping
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" adds user "participant3" to room "class room" with 200 (v4)
And user "participant1" adds user "participant4" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
| users | participant3 | 3 |
| users | participant4 | 3 |
And user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
| users::participant2 | 0 |
| users::participant3 | 1 |
| users::participant4 | 2 |
And user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 2 |
| 2 | Room 3 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
And user "participant3" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 2 |
And user "participant4" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 3 |
When user "participant1" deletes room "Room 2" with 200 (v4)
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
| 2 | Room 3 |
And user "participant3" is participant of the following rooms (v4)
| type | name |
| 2 | class room |
Scenario: Adding a user directly to a breakout room adds them to the parent as well
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
When user "participant1" adds user "participant2" to room "Room 2" with 200 (v4)
Then user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" sees the following attendees in room "Room 2" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
Scenario: Adding a user directly to a breakout room adds them to the parent as well
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
When user "participant1" adds user "participant2" to room "Room 2" with 200 (v4)
Then user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" sees the following attendees in room "Room 2" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
Scenario: Removing a user from the parent also removes them from the breakout room
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
When user "participant1" adds user "participant2" to room "class room" with 200 (v4)
When user "participant1" adds user "participant3" to room "class room" with 200 (v4)
When user "participant1" adds user "participant4" to room "class room" with 200 (v4)
Then user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
| users | participant3 | 3 |
| users | participant4 | 3 |
And user "participant1" promotes "participant2" in room "class room" with 200 (v4)
When user "participant1" creates 2 manual breakout rooms for "class room" with 200 (v1)
| users::participant3 | 0 |
| users::participant4 | 1 |
And user "participant2" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
And user "participant3" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
And user "participant4" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
When user "participant1" removes user "participant2" from room "class room" with 200 (v4)
And user "participant1" removes user "participant3" from room "class room" with 200 (v4)
And user "participant4" removes themselves from room "class room" with 200 (v4)
Then user "participant2" is participant of the following rooms (v4)
And user "participant3" is participant of the following rooms (v4)
And user "participant4" is participant of the following rooms (v4)
Scenario: Only users with normal level can be moved between breakout rooms
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
When user "participant1" adds user "participant2" to room "class room" with 200 (v4)
Then user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
And user "participant1" promotes "participant2" in room "class room" with 200 (v4)
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
# Can not "move" moderators
When user "participant1" adds user "participant2" to room "Room 2" with 400 (v4)
# Can not "add" groups
When user "participant1" adds group "group1" to room "Room 2" with 400 (v4)
Scenario: Teacher applies a new attendee map
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" adds user "participant2" to room "class room" with 200 (v4)
And user "participant1" adds user "participant3" to room "class room" with 200 (v4)
And user "participant1" adds user "participant4" to room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 3 |
| users | participant3 | 3 |
| users | participant4 | 3 |
And user "participant1" promotes "participant2" in room "class room" with 200 (v4)
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
| users | participant2 | 2 |
| users | participant3 | 3 |
| users | participant4 | 3 |
When user "participant1" creates 3 manual breakout rooms for "class room" with 200 (v1)
| users::participant3 | 0 |
| users::participant4 | 1 |
Then user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 2 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
| 2 | Room 3 | 1 | 0 | 0 |
Then user "participant3" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 1 |
Then user "participant4" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 2 |
When user "participant1" moves participants into different breakout rooms for "class room" with 400 (v1)
| users::participant2 | 0 |
| users::participant3 | 2 |
| users::participant4 | 1 |
When user "participant1" moves participants into different breakout rooms for "class room" with 400 (v1)
| users::participant3 | -2 |
| users::participant4 | 1 |
When user "participant1" moves participants into different breakout rooms for "class room" with 400 (v1)
| users::participant3 | 3 |
| users::participant4 | 1 |
When user "participant1" moves participants into different breakout rooms for "class room" with 200 (v1)
| users::participant3 | 2 |
| users::participant4 | 1 |
Then user "participant3" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 3 |
Then user "participant4" is participant of the following unordered rooms (v4)
| type | name |
| 2 | class room |
| 2 | Room 2 |
Scenario: Can not change various settings in breakout rooms directly
Given user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus |
| 2 | class room | 0 | 1 | 0 |
| 2 | Room 1 | 1 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 |
# Can not disable lobby
Then user "participant1" sets lobby state for room "Room 1" to "no lobby" with 400 (v4)
# Can not enable listing
And user "participant1" allows listing room "Room 1" for "all" with 400 (v4)
# Can not allow guests
And user "participant1" makes room "Room 1" public with 400 (v4)
# Can not set password
And user "participant1" sets password "Test123!" for room "Room 1" with 400 (v4)
# Can not set message expiration
And user "participant1" set the message expiration to 3600 of room "Room 1" with 400 (v4)
# Can enable recording consent
Given recording server is started
And the following "spreed" app config is set
| recording_consent | 2 |
Then user "participant1" sets the recording consent to 1 for room "Room 1" with 400 (v4)
Scenario: Handle recording consent for all breakout rooms on the parent
Given recording server is started
And the following "spreed" app config is set
| recording_consent | 2 |
And user "participant1" creates room "class room" (v4)
| roomType | 2 |
| roomName | class room |
And user "participant1" sees the following attendees in room "class room" with 200 (v4)
| actorType | actorId | participantType |
| users | participant1 | 1 |
And user "participant1" creates 2 automatic breakout rooms for "class room" with 200 (v1)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | recordingConsent |
| 2 | class room | 0 | 1 | 0 | 0 |
| 2 | Room 1 | 1 | 0 | 0 | 0 |
| 2 | Room 2 | 1 | 0 | 0 | 0 |
# Enabling recording consent on the parent is not allowed with breakout rooms running
And user "participant1" starts breakout rooms in room "class room" with 200 (v1)
Then user "participant1" sets the recording consent to 1 for room "class room" with 400 (v4)
And user "participant1" stops breakout rooms in room "class room" with 200 (v1)
# Enabling recording consent on the parent updates all breakout rooms
Then user "participant1" sets the recording consent to 1 for room "class room" with 200 (v4)
And user "participant1" is participant of the following unordered rooms (v4)
| type | name | lobbyState | breakoutRoomMode | breakoutRoomStatus | recordingConsent |
| 2 | class room | 0 | 1 | 0 | 1 |
| 2 | Room 1 | 1 | 0 | 0 | 1 |
| 2 | Room 2 | 1 | 0 | 0 | 1 |