diff --git a/integration_testing/features/manage-resources/bulk-editing/bul-edit-multiple-resources.feature b/integration_testing/features/manage-resources/bulk-editing/bulk-edit-multiple-resources.feature similarity index 100% rename from integration_testing/features/manage-resources/bulk-editing/bul-edit-multiple-resources.feature rename to integration_testing/features/manage-resources/bulk-editing/bulk-edit-multiple-resources.feature diff --git a/integration_testing/features/manage-resources/create-exercise.feature b/integration_testing/features/manage-resources/create-exercise.feature index 739839a59d..2122861d17 100755 --- a/integration_testing/features/manage-resources/create-exercise.feature +++ b/integration_testing/features/manage-resources/create-exercise.feature @@ -4,78 +4,121 @@ Feature: Create an exercise Given I am signed in to Studio And I am at the channel editor page - Scenario: Create an exercise with questions of type *Single choice* + Scenario: Create a new exercise (Completion: When goal is met - Goal: 100% correct) When I click the *Add* button And I select the *New exercise* option Then I see the *Details* tab of the *New exercise* modal - When I fill in the required fields (*Title*, *Completion* and *Goal*) + When I fill in all of the required fields + And I set the completion criteria to *When goal is met - Goal: 100% correct)* #repeat with the rest of the available goal types And I click the *Questions* tab - Then I see the *New question* button + Then I see the text: *Exercise has no questions* + And I see a *New question* button When I click the *New question* button Then I see the question editor - And I see that *Single choice* is the default *Response type* - When I fill in the question text in the question editor field - And I add an image - And I provide answers - And I select one answer as the correct answer - And I provide a hint - Then I've completed the creation of the question of type *Single choice* #repeat the same steps to add as many questions as necessary - When I click the *Finish* button - Then I am returned to the main topic tree view - And I can see the newly created exercise + When I add one or several questions of the desired type + And I add answers and hints as necessary + And I click the *Finish* button + Then I am back at the channel editor page + And I can see the newly added exercise + And I see a small green dot indicating that the exercise is unpublished - Scenario: Create an exercise with questions of type *Multiple choice* + Scenario: Create a new exercise - practice quiz When I click the *Add* button And I select the *New exercise* option Then I see the *Details* tab of the *New exercise* modal - When I fill in the required fields (*Title*, *Completion* and *Goal*) + When I fill in all of the required fields + And I set the completion criteria to *Practice quiz* And I click the *Questions* tab - Then I see the *New question* button + Then I see the text: *Exercise has no questions* + And I see a *New question* button When I click the *New question* button Then I see the question editor - When I select the *Multiple choice* option from the *Response type* drop-down - And I fill in the question text in the question editor field - And I add an image - And I provide answers - And I select at least one answer as the correct answer - And I provide a hint - Then I've completed the creation of the question of type *Multiple choice* #repeat the same steps to add as many questions as necessary - When I click the *Finish* button - Then I am returned to the main topic tree view - And I can see the newly created exercise + When I add one or several questions of the desired type + And I add answers and hints as necessary + And I click the *Finish* button + Then I am back at the channel editor page + And I can see the newly added exercise + And I see a small green dot indicating that the exercise is unpublished - Scenario: Create an exercise with questions of type *Numeric input* + Scenario: Create a new exercise - survey When I click the *Add* button And I select the *New exercise* option Then I see the *Details* tab of the *New exercise* modal - When I fill in the required fields (*Title*, *Completion* and *Goal*) + When I fill in all of the required fields + And I set the completion criteria to *Survey* And I click the *Questions* tab - Then I see the *New question* button + Then I see the text: *Exercise has no questions* + And I see a *New question* button When I click the *New question* button Then I see the question editor + When I add one or several questions of the desired type + And I add answers and hints as necessary + And I click the *Finish* button + Then I am back at the channel editor page + And I can see the newly added exercise + And I see a small green dot indicating that the exercise is unpublished + + Scenario: Existing and newly created exercises behave consistently + When I open a published channel containing previously created exercises with various completion types and questions + Then I can see all exercises displayed in the channel editor page + And exercises which were previously marked as *Incomplete* are still marked as *Incomplete* + And exercises without an *Incomplete* indicator are still displayed without it + And existing and newly created exercises look and function the same + + Scenario: Create an exercise with questions of type *Single choice* + Given I am at the *Questions* tab + When I click the *New question* button + Then I see the question editor + And I see that *Single choice* is the default *Response type* + When I fill in the question text in the question editor field using all of the available editor options such as adding and resizing an image, editing the text or inserting formulas + And I provide answers + And I select one answer as the correct answer + And I provide a hint + And I click the *Finish* button + Then I am back at the channel editor page + And I can see the newly added exercise + And I see a small green dot indicating that the exercise is unpublished + + Scenario: Create an exercise with questions of type *Multiple choice* + Given I am at the question editor + When I select the *Multiple choice* option from the *Response type* drop-down + And I fill in the question text in the question editor field using all of the available editor options such as adding and resizing an image, editing the text or inserting formulas + And I provide answers + And I select one answer as the correct answer + And I provide a hint + And I click the *Finish* button + Then I am back at the channel editor page + And I can see the newly added exercise + And I see a small green dot indicating that the exercise is unpublished + + Scenario: Create an exercise with questions of type *Numeric input* + Given I am at the question editor When I select the *Numeric input* option from the *Response type* drop-down - And I fill in the question text in the question editor field + And I fill in the question text in the question editor field using all of the available editor options such as adding and resizing an image, editing the text or inserting formulas And I provide answers + And I select one answer as the correct answer And I provide a hint - Then I've completed the creation of the question of type *Numeric input* #repeat the same steps to add as many questions as necessary - When I click the *Finish* button - Then I am returned to the main topic tree view - And I can see the newly created exercise + And I click the *Finish* button + Then I am back at the channel editor page + And I can see the newly added exercise + And I see a small green dot indicating that the exercise is unpublished Scenario: Create an exercise with questions of type *True/False* - When I click the *Add* button - And I select the *New exercise* option - Then I see the *Details* tab of the *New exercise* modal - When I fill in the required fields (*Title*, *Completion* and *Goal*) - And I click the *Questions* tab - Then I see the *New question* button - When I click the *New question* button - Then I see the question editor + Given I am at the question editor When I select the *True/False* option from the *Response type* drop-down - And I fill in the question text in the question editor field - And I select either *True* or *False* as the correct answer + And I fill in the question text in the question editor field using all of the available editor options such as adding and resizing an image, editing the text or inserting formulas + And I select one answer as the correct answer And I provide a hint - Then I've completed the creation of the question of type *True/False* #repeat the same steps to add as many questions as necessary - When I click the *Finish* button - Then I am returned to the main topic tree view - And I can see the newly created exercise + And I click the *Finish* button + Then I am back at the channel editor page + And I can see the newly added exercise + And I see a small green dot indicating that the exercise is unpublished + + Scenario: Create an exercise with questions of type *Free response* + Given I am at the question editor for an exercise of type Survey + When I select the *Free response* option from the *Response type* drop-down + And I fill in the question text in the question editor field using all of the available editor options such as adding and resizing an image, editing the text or inserting formulas + And I click the *Finish* button + Then I am back at the channel editor page + And I can see the newly added exercise + And I see a small green dot indicating that the exercise is unpublished diff --git a/integration_testing/features/manage-resources/restore-resources-from-trash.feature b/integration_testing/features/manage-resources/restore-resources-from-trash.feature index ce3b55061a..05b4dbbd33 100755 --- a/integration_testing/features/manage-resources/restore-resources-from-trash.feature +++ b/integration_testing/features/manage-resources/restore-resources-from-trash.feature @@ -2,7 +2,7 @@ Feature: Restore resources from trash Background: Given I am signed in to Studio - And I am at the channel editing page + And I am at the channel editor page And I have already removed some resources And I have opened the trash page diff --git a/integration_testing/features/manage-channels/sync-channel.feature b/integration_testing/features/manage-resources/sync-resources.feature similarity index 78% rename from integration_testing/features/manage-channels/sync-channel.feature rename to integration_testing/features/manage-resources/sync-resources.feature index 3023eba6fc..3874a234dc 100755 --- a/integration_testing/features/manage-channels/sync-channel.feature +++ b/integration_testing/features/manage-resources/sync-resources.feature @@ -1,5 +1,5 @@ Feature: Sync resources - Studio users need to be able to sync and update the resources in their channels that have been imported from other channels, but have been modified since the original import. + Studio users need to be able to sync and update the resources in their channels which have been imported from other channels, but have been modified since the original import. Background: Given I am signed in to Studio @@ -10,12 +10,14 @@ Feature: Sync resources Given there is a new version of the resource file in When I click the *···* button in the top-right corner And I select the *Sync resources* option - Then I see *Sync resources* modal window - And I see options to sync files, resource details, titles and description, assessment details + Then I see the *Sync resources* modal window + And I see the *Select what you would like to sync* section with options to sync files, resource details, titles and description, assessment details When I select the Files checkbox And I click the *Continue* button Then I see the *Confirm sync* modal - When I click *Sync* + And I see the following info: You are about to sync and update the following: Files + And I see a warning that this will overwrite any changes I've made to copied or imported resources + When I click the *Sync* button Then the modal closes When after a period of time I refresh the page And inspect the updated resource(s) @@ -24,7 +26,7 @@ Feature: Sync resources Scenario: Sync resource details Given there is a new version of the resource file in And I am at the *Sync resources* modal window - When I select the *Tags* checkbox + When I select the *Resource details* checkbox And click the *Continue* button Then I see the *Confirm sync* modal When I click *Sync* @@ -60,11 +62,11 @@ Feature: Sync resources Scenario: Edited resource metadata is reverted after syncing Given I have edited some of the resource's metadata (title, description or tags) after importing from And I am at the *Sync resources* modal window - When I select the *Resource details* or *Titles and descriptions* checkbox + When I select the *Resource details* and *Titles and descriptions* checkboxes And click the *Continue* button Then I see the *Confirm sync* modal When I click *Sync* Then the modal closes When after a period of time I refresh the page And inspect the updated resource - Then I see that my previous edits of the title, description or tags for the resource have been reverted to reflect those on the + Then I see that my previous edits of the title, description or tags for the resource have been reverted to reflect those in diff --git a/integration_testing/features/manage-resources/upload-files.feature b/integration_testing/features/manage-resources/upload-files.feature index af25b4059a..e487001dcb 100755 --- a/integration_testing/features/manage-resources/upload-files.feature +++ b/integration_testing/features/manage-resources/upload-files.feature @@ -15,7 +15,7 @@ Feature: Upload files Then I see a file explorer window When I select a supported file for upload And I click the *Open* button - Then I see the *Edit files* modal + Then I see the *Edit files* modal #if I am uploading resources to a folder with metadata then I will first see the *Apply details from the folder * When I fill in all the required fields And I click the *Finish* button Then I am returned to the main topic tree view @@ -27,7 +27,7 @@ Feature: Upload files Then I see a file explorer window When I select several supported files for upload And I click the *Open* button - Then I see the *Edit files* modal + Then I see the *Edit files* modal #if I am uploading resources to a folder with metadata then I will first see the *Apply details from the folder * When I fill in all the required fields for each file And I click the *Finish* button Then I am returned to the main topic tree view @@ -39,7 +39,7 @@ Feature: Upload files Then I see a file explorer window When I select several supported files for upload And I click the *Open* button - Then I see the *Edit files* modal + Then I see the *Edit files* modal #if I am uploading resources to a folder with metadata then I will first see the *Apply details from the folder * When I fill in all the required fields for each file And I click the *Finish* button Then I am returned to the main topic tree view @@ -48,7 +48,7 @@ Feature: Upload files Scenario: Upload more files by drag and drop Given I am at the *Edit files* modal after having imported some files When I drag and drop files - Then I see the *Edit files* modal + Then I see the *Edit files* modal with the newly uploaded files #if I am uploading resources to a folder with metadata then I will first see the *Apply details from the folder * When I fill in all the required fields for each file And I click the *Finish* button Then I am returned to the main topic tree view @@ -63,4 +63,4 @@ Feature: Upload files Then I am back at the *Upload files* modal When I close the modal Then I am returned to the main topic tree view - And I can see the uploaded files are not present + And I can see the uploaded files are not present diff --git a/integration_testing/features/studio-critical-workflows.feature b/integration_testing/features/studio-critical-workflows.feature index f321872b7f..dd00bf8c7d 100644 --- a/integration_testing/features/studio-critical-workflows.feature +++ b/integration_testing/features/studio-critical-workflows.feature @@ -4,6 +4,7 @@ Feature: Kolibri Studio critical workflows Background: Given Kolibri Studio is accessible at https://studio.learningequality.org/ or any of the test environments And I am at Kolibri Studio's sign-in page + And I already have several testing accounts with different channels and resources Scenario: Create an account and sign in with the created account When I click the *Create an account* button @@ -37,7 +38,7 @@ Feature: Kolibri Studio critical workflows Given I am not signed in to Studio And I am at Kolibri Studio's sign-in page When I click the *Explore without an account* link - Then I see the *Content Library* page with the available public channels + Then I see the *Content library* page with the available public channels And I can filter the search results by keyword, language, license, format, resources for coach, available captions and subtitles And I can view or download the channel summary @@ -58,14 +59,16 @@ Feature: Kolibri Studio critical workflows Then the interface language changes to the selected language Scenario: Open and close the sidebar menu + Given I am signed-in to Kolibri Studio When I click the hamburger menu button in the upper left screen corner Then I see the sidebar menu - And I can see the following options: *Channels*, *Settings*, *Change language*, *Help and support*, *Sign out*, the LE logo, *© 2025 Learning Equality", *Give feedback* + And I can see the following options: *Channels*, *Settings*, *Change language*, *Help and support*, *Sign out*, the LE logo, *© 2026 Learning Equality*, *Give feedback* And I can click any of the options inside When I click the *X* button, or anywhere on the browser screen Then I don't see the sidebar menu anymore Scenario: Open and close the user menu + Given I am signed-in to Kolibri Studio When I click the user menu button in the upper right screen corner Then I see the user menu And I can see the following options: *Settings*, *Change language*, *Help and support*, *Sign out* @@ -75,7 +78,7 @@ Feature: Kolibri Studio critical workflows Scenario: Create a new channel Given I am signed in to Studio - And I am at *My Channels* tab + And I am at *My channels* tab When I click the *New channel* button Then I see the *New channel* page When I upload an image file as a channel thumbnail (optional) @@ -84,7 +87,7 @@ Feature: Kolibri Studio critical workflows And I enter channel description (optional) And I fill in the default copyright fields (optional) And I click the *Create* button - Then I am at the channel editor view + Then I am at the channel editor page And I see the title of the channel to the left And I see a disabled *Publish* button And I see *Click "ADD" to start building your channel Create, upload, or import resources from other channels* @@ -92,7 +95,7 @@ Feature: Kolibri Studio critical workflows Scenario: Edit channel details Given I am signed in to Studio - And I am at the channel editor view + And I am at the channel editor page When I click the pencil icon next to the channel name Then I see a modal window with the channel details And I see the details for the channel - channel name, language, channel description etc. @@ -132,13 +135,34 @@ Feature: Kolibri Studio critical workflows Then I am back at the channel editor page And I can see the uploaded files - Scenario: Create a new exercise + Scenario: Create a new exercise (Completion: When goal is met - Goal: 100% correct) + Given I am signed in to Studio + And I am at the channel editor page + When I click the *Add* button + And I select the *New exercise* option + Then I see the *Details* tab of the *New exercise* modal + When I fill in all of the required fields + And I set the completion criteria to *When goal is met - Goal: 100% correct* + And I click the *Questions* tab + Then I see the text: *Exercise has no questions* + And I see a *New question* button + When I click the *New question* button + Then I see the question editor + When I add one or several questions of the desired type + And I add answers and hints as necessary + And I click the *Finish* button + Then I am back at the channel editor page + And I can see the newly added exercise + And I see a small green dot indicating that the exercise is unpublished + + Scenario: Create a new exercise - practice quiz Given I am signed in to Studio And I am at the channel editor page When I click the *Add* button And I select the *New exercise* option Then I see the *Details* tab of the *New exercise* modal When I fill in all of the required fields + And I set the completion criteria to *Practice quiz* And I click the *Questions* tab Then I see the text: *Exercise has no questions* And I see a *New question* button @@ -149,6 +173,35 @@ Feature: Kolibri Studio critical workflows And I click the *Finish* button Then I am back at the channel editor page And I can see the newly added exercise + And I see a small green dot indicating that the exercise is unpublished + + Scenario: Create a new exercise - survey + Given I am signed in to Studio + And I am at the channel editor page + When I click the *Add* button + And I select the *New exercise* option + Then I see the *Details* tab of the *New exercise* modal + When I fill in all of the required fields + And I set the completion criteria to *Survey* + And I click the *Questions* tab + Then I see the text: *Exercise has no questions* + And I see a *New question* button + When I click the *New question* button + Then I see the question editor + When I add one or several questions of the desired type + And I add answers and hints as necessary + And I click the *Finish* button + Then I am back at the channel editor page + And I can see the newly added exercise + And I see a small green dot indicating that the exercise is unpublished + + Scenario: Existing and newly created exercises behave consistently + Given I am signed in to Studio + When I open a published channel containing previously created exercises with various completion types and questions + Then I can see all exercises displayed in the channel editor page + And exercises which were previously marked as *Incomplete* are still marked as *Incomplete* + And exercises without an *Incomplete* indicator are still displayed without it + And existing and newly created exercises look and function the same Scenario: Import content from another channel Given I am signed in to Studio @@ -167,6 +220,8 @@ Feature: Kolibri Studio critical workflows And I click the *Import* button Then I am back at the channel editor page And I see the *Copying* indicator for each folder or resource which is being copied + When after a period of time I refresh the page + Then I can see the imported folders and resources in the channel editor page Scenario: Publish a channel Given I am signed in to Studio @@ -179,10 +234,28 @@ Feature: Kolibri Studio critical workflows When I fill in the required fields And I click *Publish* Then I see the *Publishing channel* progress indicator at the top right - When the the channel has been published successfully + When the channel has been published successfully Then I see the *Published N seconds ago* text And I receive a confirmation email that the channel has been published successfully + Scenario: Publish a channel with incomplete resources + Given I am signed in to Studio + And I am at the channel editor page + And I have write access to the channel + And the channel contains unpublished resources or edits plus one or several incomplete resources + When I click the *Publish* button at the top right corner + Then the *Publish modal* appears + And I see a warning that incomplete resources will not be published and made available for download in Kolibri. + When I click *Continue* + Then I see the *Describe what's new in this channel version* field and the *Language* drop-down + When I fill in the required fields + And I click *Publish* + Then I see the *Publishing channel* progress indicator at the top right + When the channel has been published successfully + Then I see the *Published N seconds ago* text + And I see a yellow exclamation icon with the following text *N resources are incomplete and cannot be published* + And I receive a confirmation email that the channel has been published successfully + Scenario: Invite collaborators with *Can edit* permissions Given I am signed in to Studio And I am at the channel editor page @@ -192,14 +265,39 @@ Feature: Kolibri Studio critical workflows When I type the email of the person I want to invite And I don't change the preselected *Can edit* option in the drop-down And I click the *Send invitation* button - Then the collaborator will be notified on their *My Channels* page, where they can accept or reject the pending invitation - And the collaborator will receive an email allowing them to accept/reject the pending invitation + Then the collaborator will be notified on their *My channels* page, where they can accept or decline the pending invitation + And the collaborator will receive an email allowing them to accept/decline the pending invitation + When I sign in to Studio as the collaborator + Then I can accept the pending invitation + When I make some changes to the channel or resources + And I click the *Publish* button + Then I can publish the channel + And any changes made to the channel are visible by the other collaborators + + Scenario: Invite collaborators with *Can view* permissions + Given I am signed in to Studio + And I am at the channel editor page + When I click the *...* (options) button in the topbar + And select the *Share channel* option + Then I am at the *Sharing* tab for the channel + When I type the email of the person I want to invite + And I select the *Can view* option from the drop-down + And I click the *Send invitation* button + Then the collaborator will be notified on their *View-only* page, where they can accept or decline the pending invitation + And the collaborator will receive an email allowing them to accept/decline the pending invitation + When I sign in to Studio as the collaborator + And I accept the pending invitation + And I open the channel editor page + Then I can see the channel marked as *View-only* + And I can see the available folders and resources + And I can't add or edit folders and resources + And I can't publish the channel Scenario: Sync resources Given I am signed in to Studio And I am at the channel editor page for And there is a resource in the that has been imported from - And there is new version of the resource file in the + And there is a new version of the resource in When I click the *···* button in the top-right corner And I select the *Sync resources* option Then I see *Sync resources* modal window @@ -250,6 +348,17 @@ Feature: Kolibri Studio critical workflows And I see the *Undo* button And I no longer see the resource + Scenario: Removed folder and resources can be restored + Given I am signed in to Studio + And I am at the channel editor page + And there are available folders and resources of different types + When I check the checkbox of a folder or a resource + And I click the *Remove* button + Then I can see the *Sent to trash* snackbar message + And I see the *Undo* button + When I click the *Undo* button + Then I can still see the folder or resource in the channel editor page + Scenario: Copy multiple resources Given I am signed in to Studio And I am at the channel editor page @@ -289,13 +398,13 @@ Feature: Kolibri Studio critical workflows Scenario: Delete a channel Given I am signed in to Studio And I have permissions to edit - And I am on *My Channels* tab + And I am on *My channels* tab When I click the *Options* button of a channel #the three dots to the right Then I see a *Delete channel* option When I click the *Delete channel* option And I click the *Delete channel* button Then I see a message that the channel is deleted - And the deleted channel is no longer displayed at *My Channels* page + And the deleted channel is no longer displayed at *My channels* page Feature: View and edit account information Given I am signed in to Studio @@ -317,6 +426,7 @@ Feature: Kolibri Studio critical workflows And I can see the *Request more space* section Scenario: Submit more space request + Given I am signed-in to Kolibri Studio When I fill in all the space request text fields And I click the *Send request* submit button Then I see all the text fields clear @@ -338,7 +448,7 @@ Feature: Kolibri Studio critical workflows And I see the newly created collection And I see the number of channels in that collection - Scenario: Explore the content library + Scenario: Explore the Content library Given I am signed in to Studio When I go to the *Content library* Then I see a page with the available public channels @@ -346,3 +456,11 @@ Feature: Kolibri Studio critical workflows And I can view or download the channel summary When I click on a channel card Then I can see all of the channel's resources in *View-only* format + + Scenario: Sign out and confirm that pages visible only to a signed-in user are no longer accessible + Given I am signed in to Studio + When I click the user profile icon + And I click *Sign out* + Then I am at Kolibri Studio's sign-in page + When I click the browser's *Back* button + Then I can't access any of the pages I've visited as a signed-in user