diff --git a/.github/workflows/build-2.x.yml b/.github/workflows/build-2.x.yml index 2ab3a539..c5d9d66b 100644 --- a/.github/workflows/build-2.x.yml +++ b/.github/workflows/build-2.x.yml @@ -23,12 +23,15 @@ jobs: strategy: fail-fast: false matrix: - php-versions: ["8.1", "8.2"] + php-versions: ["8.1", "8.2", "8.3"] # test-suite functional-javascript will appear to pass but will skip tests; missing chromedriver. test-suite: ["kernel", "functional", "functional-javascript"] - drupal-version: ["10.0.x", "10.1.x", "10.2.x-dev"] + drupal-version: ["10.1.x", "10.2.x", "10.3.x-dev"] mysql: ["8.0"] allowed_failure: [false] + exclude: + - php-versions: "8.3" + drupal-version: "10.1.x" name: PHP ${{ matrix.php-versions }} | drupal ${{ matrix.drupal-version }} | mysql ${{ matrix.mysql }} | test-suite ${{ matrix.test-suite }} diff --git a/modules/islandora_audio/tests/src/Functional/GenerateAudioDerivativeTest.php b/modules/islandora_audio/tests/src/Functional/GenerateAudioDerivativeTest.php index 6b85cd1b..094a7856 100644 --- a/modules/islandora_audio/tests/src/Functional/GenerateAudioDerivativeTest.php +++ b/modules/islandora_audio/tests/src/Functional/GenerateAudioDerivativeTest.php @@ -40,7 +40,7 @@ class GenerateAudioDerivativeTest extends GenerateDerivativeTestBase { // Create an action to generate a audio derivative. $this->drupalGet('admin/config/system/actions'); $this->getSession()->getPage()->findById("edit-action")->selectOption("Generate a audio derivative"); - $this->getSession()->getPage()->pressButton($this->t('Create')); + $this->getSession()->getPage()->pressButton('Create'); $this->assertSession()->statusCodeEquals(200); $this->getSession()->getPage()->fillField('edit-label', "Generate audio test derivative"); @@ -53,7 +53,7 @@ class GenerateAudioDerivativeTest extends GenerateDerivativeTestBase { $this->getSession()->getPage()->fillField('edit-args', "-f mp3"); $this->getSession()->getPage()->fillField('edit-scheme', "public"); $this->getSession()->getPage()->fillField('edit-path', "derp.mov"); - $this->getSession()->getPage()->pressButton($this->t('Save')); + $this->getSession()->getPage()->pressButton('Save'); $this->assertSession()->statusCodeEquals(200); // Create a context and add the action as a derivative reaction. @@ -69,7 +69,7 @@ class GenerateAudioDerivativeTest extends GenerateDerivativeTestBase { 'field_media_use[0][target_id]' => $this->preservationMasterTerm->label(), ]; $this->drupalGet('media/add/' . $this->testMediaType->id()); - $this->submitForm($values, $this->t('Save')); + $this->submitForm($values, 'Save'); $expected = [ 'source_uri' => 'test_file.txt', diff --git a/modules/islandora_image/tests/src/Functional/GenerateImageDerivativeTest.php b/modules/islandora_image/tests/src/Functional/GenerateImageDerivativeTest.php index 44cdda58..17c1beae 100644 --- a/modules/islandora_image/tests/src/Functional/GenerateImageDerivativeTest.php +++ b/modules/islandora_image/tests/src/Functional/GenerateImageDerivativeTest.php @@ -42,7 +42,7 @@ class GenerateImageDerivativeTest extends GenerateDerivativeTestBase { // Create an action to generate a jpeg thumbnail. $this->drupalGet('admin/config/system/actions'); $this->getSession()->getPage()->findById("edit-action")->selectOption("Generate an image derivative"); - $this->getSession()->getPage()->pressButton($this->t('Create')); + $this->getSession()->getPage()->pressButton('Create'); $this->assertSession()->statusCodeEquals(200); $this->getSession()->getPage()->fillField('edit-label', "Generate image test derivative"); @@ -55,7 +55,7 @@ class GenerateImageDerivativeTest extends GenerateDerivativeTestBase { $this->getSession()->getPage()->fillField('edit-args', "-thumbnail 20x20"); $this->getSession()->getPage()->fillField('edit-scheme', "public"); $this->getSession()->getPage()->fillField('edit-path', "derp.jpeg"); - $this->getSession()->getPage()->pressButton($this->t('Save')); + $this->getSession()->getPage()->pressButton('Save'); $this->assertSession()->statusCodeEquals(200); // Create a context and add the action as a derivative reaction. @@ -71,7 +71,7 @@ class GenerateImageDerivativeTest extends GenerateDerivativeTestBase { 'field_media_use[0][target_id]' => $this->preservationMasterTerm->label(), ]; $this->drupalGet('media/add/' . $this->testMediaType->id()); - $this->submitForm($values, $this->t('Save')); + $this->submitForm($values, 'Save'); $expected = [ 'source_uri' => 'test_file.txt', diff --git a/modules/islandora_video/tests/src/Functional/GenerateVideoDerivativeTest.php b/modules/islandora_video/tests/src/Functional/GenerateVideoDerivativeTest.php index de06ba2f..2f79e18e 100644 --- a/modules/islandora_video/tests/src/Functional/GenerateVideoDerivativeTest.php +++ b/modules/islandora_video/tests/src/Functional/GenerateVideoDerivativeTest.php @@ -37,7 +37,7 @@ class GenerateVideoDerivativeTest extends GenerateDerivativeTestBase { // Create an action to generate a jpeg thumbnail. $this->drupalGet('admin/config/system/actions'); $this->getSession()->getPage()->findById("edit-action")->selectOption("Generate a video derivative"); - $this->getSession()->getPage()->pressButton($this->t('Create')); + $this->getSession()->getPage()->pressButton('Create'); $this->assertSession()->statusCodeEquals(200); $this->getSession()->getPage()->fillField('edit-label', "Generate video test derivative"); @@ -50,7 +50,7 @@ class GenerateVideoDerivativeTest extends GenerateDerivativeTestBase { $this->getSession()->getPage()->fillField('edit-args', "-f mp4"); $this->getSession()->getPage()->fillField('edit-scheme', "public"); $this->getSession()->getPage()->fillField('edit-path', "derp.mov"); - $this->getSession()->getPage()->pressButton($this->t('Save')); + $this->getSession()->getPage()->pressButton('Save'); $this->assertSession()->statusCodeEquals(200); // Create a context and add the action as a derivative reaction. @@ -66,7 +66,7 @@ class GenerateVideoDerivativeTest extends GenerateDerivativeTestBase { 'field_media_use[0][target_id]' => $this->preservationMasterTerm->label(), ]; $this->drupalGet('media/add/' . $this->testMediaType->id()); - $this->submitForm($values, $this->t('Save')); + $this->submitForm($values, 'Save'); $expected = [ 'source_uri' => 'test_file.txt', diff --git a/tests/src/Functional/ContentEntityTypeTest.php b/tests/src/Functional/ContentEntityTypeTest.php index 5ed22948..2fa9b574 100644 --- a/tests/src/Functional/ContentEntityTypeTest.php +++ b/tests/src/Functional/ContentEntityTypeTest.php @@ -39,7 +39,7 @@ class ContentEntityTypeTest extends IslandoraFunctionalTestBase { $this->addCondition('test', 'content_entity_type'); $this->getSession()->getPage()->checkField("edit-conditions-content-entity-type-types-node"); $this->getSession()->getPage()->findById("edit-conditions-content-entity-type-context-mapping-node")->selectOption("@node.node_route_context:node"); - $this->getSession()->getPage()->pressButton($this->t('Save and continue')); + $this->getSession()->getPage()->pressButton('Save and continue'); $this->addPresetReaction('test', 'index', 'hello_world'); // Create a new node confirm Hello World! is printed to the screen. @@ -53,7 +53,7 @@ class ContentEntityTypeTest extends IslandoraFunctionalTestBase { 'files[field_media_file_0]' => __DIR__ . '/../../fixtures/test_file.txt', ]; $this->drupalGet('media/add/' . $this->testMediaType->id()); - $this->submitForm($values, $this->t('Save')); + $this->submitForm($values, 'Save'); $this->assertSession()->pageTextNotContains("Hello World!"); } diff --git a/tests/src/Functional/DerivativeReactionTest.php b/tests/src/Functional/DerivativeReactionTest.php index 00e0e5ae..720b8a45 100644 --- a/tests/src/Functional/DerivativeReactionTest.php +++ b/tests/src/Functional/DerivativeReactionTest.php @@ -53,7 +53,7 @@ class DerivativeReactionTest extends IslandoraFunctionalTestBase { 'field_media_of[0][target_id]' => 'Test Node', ]; $this->drupalGet('media/add/' . $this->testMediaType->id()); - $this->submitForm($values, $this->t('Save')); + $this->submitForm($values, 'Save'); // field_media_of is set and there's a file, so derivatives should fire. $this->assertSession()->pageTextContains("Hello World!"); @@ -71,9 +71,9 @@ class DerivativeReactionTest extends IslandoraFunctionalTestBase { 'files[field_media_file_0]' => __DIR__ . '/../../fixtures/test_file2.txt', ]; $this->drupalGet($media_url . '/edit'); - $this->getSession()->getPage()->pressButton($this->t('Remove')); + $this->getSession()->getPage()->pressButton('Remove'); $this->getSession()->getPage()->fillField('files[field_media_file_0]', __DIR__ . '/../../fixtures/test_file2.txt'); - $this->getSession()->getPage()->pressButton($this->t('Save')); + $this->getSession()->getPage()->pressButton('Save'); $this->assertSession()->pageTextContains("Hello World!"); } diff --git a/tests/src/Functional/EmitNodeEventTest.php b/tests/src/Functional/EmitNodeEventTest.php index 83f062ae..a18ffbc8 100644 --- a/tests/src/Functional/EmitNodeEventTest.php +++ b/tests/src/Functional/EmitNodeEventTest.php @@ -44,7 +44,7 @@ class EmitNodeEventTest extends IslandoraFunctionalTestBase { $this->addCondition('test', 'content_entity_type'); $this->getSession()->getPage()->checkField("edit-conditions-content-entity-type-types-node"); $this->getSession()->getPage()->findById("edit-conditions-content-entity-type-context-mapping-node")->selectOption("@node.node_route_context:node"); - $this->getSession()->getPage()->pressButton($this->t('Save and continue')); + $this->getSession()->getPage()->pressButton('Save and continue'); $this->addPresetReaction('test', 'index', $action_id); $this->assertSession()->statusCodeEquals(200); @@ -68,7 +68,7 @@ class EmitNodeEventTest extends IslandoraFunctionalTestBase { protected function createEmitAction($entity_type, $event_type) { $this->drupalGet('admin/config/system/actions'); $this->getSession()->getPage()->findById("edit-action")->selectOption("Emit a $entity_type event to a queue/topic"); - $this->getSession()->getPage()->pressButton($this->t('Create')); + $this->getSession()->getPage()->pressButton('Create'); $this->assertSession()->statusCodeEquals(200); $action_id = "emit_" . $entity_type . "_" . lcfirst($event_type); @@ -76,7 +76,7 @@ class EmitNodeEventTest extends IslandoraFunctionalTestBase { $this->getSession()->getPage()->fillField('edit-id', $action_id); $this->getSession()->getPage()->fillField('edit-queue', "emit-$entity_type-" . lcfirst($event_type)); $this->getSession()->getPage()->findById("edit-event")->selectOption($event_type); - $this->getSession()->getPage()->pressButton($this->t('Save')); + $this->getSession()->getPage()->pressButton('Save'); $this->assertSession()->statusCodeEquals(200); return $action_id; diff --git a/tests/src/Functional/EntityBundleTest.php b/tests/src/Functional/EntityBundleTest.php index bde1ee40..27183826 100644 --- a/tests/src/Functional/EntityBundleTest.php +++ b/tests/src/Functional/EntityBundleTest.php @@ -27,7 +27,7 @@ class EntityBundleTest extends IslandoraFunctionalTestBase { $this->addCondition('test', 'islandora_entity_bundle'); $this->getSession()->getPage()->checkField("edit-conditions-islandora-entity-bundle-bundles-test-type"); $this->getSession()->getPage()->findById("edit-conditions-islandora-entity-bundle-context-mapping-node")->selectOption("@node.node_route_context:node"); - $this->getSession()->getPage()->pressButton($this->t('Save and continue')); + $this->getSession()->getPage()->pressButton('Save and continue'); $this->addPresetReaction('test', 'index', 'hello_world'); // Create a new test_type confirm Hello World! is printed to the screen. diff --git a/tests/src/Functional/FormDisplayAlterReactionTest.php b/tests/src/Functional/FormDisplayAlterReactionTest.php index d394b728..fe70aa64 100644 --- a/tests/src/Functional/FormDisplayAlterReactionTest.php +++ b/tests/src/Functional/FormDisplayAlterReactionTest.php @@ -49,7 +49,7 @@ class FormDisplayAlterReactionTest extends IslandoraFunctionalTestBase { $this->drupalGet("admin/structure/context/test/reaction/add/form_display_alter"); $this->getSession()->getPage()->findById("edit-reactions-form-display-alter-mode")->selectOption('node.secondary'); - $this->getSession()->getPage()->pressButton($this->t('Save and continue')); + $this->getSession()->getPage()->pressButton('Save and continue'); $this->assertSession()->statusCodeEquals(200); drupal_flush_all_caches(); diff --git a/tests/src/Functional/IndexingTest.php b/tests/src/Functional/IndexingTest.php index ff215281..cf2dbb66 100644 --- a/tests/src/Functional/IndexingTest.php +++ b/tests/src/Functional/IndexingTest.php @@ -66,7 +66,7 @@ class IndexingTest extends IslandoraFunctionalTestBase { $this->drupalGet("$url/delete"); // Delete the node. - $this->submitForm([], $this->t('Delete')); + $this->submitForm([], 'Delete'); $this->assertSession()->statusCodeEquals(200); // Confirm Goodbye, Cruel World! is printed to the screen. diff --git a/tests/src/Functional/IslandoraFunctionalTestBase.php b/tests/src/Functional/IslandoraFunctionalTestBase.php index 016788d0..1ad8081d 100644 --- a/tests/src/Functional/IslandoraFunctionalTestBase.php +++ b/tests/src/Functional/IslandoraFunctionalTestBase.php @@ -306,7 +306,7 @@ EOD; ->getPage() ->findById("edit-reactions-$reaction_type-actions") ->selectOption($action_id); - $this->getSession()->getPage()->pressButton($this->t('Save and continue')); + $this->getSession()->getPage()->pressButton('Save and continue'); $this->assertSession()->statusCodeEquals(200); } @@ -315,7 +315,7 @@ EOD; */ protected function postNodeAddForm($bundle_id, $values, $button_text) { $this->drupalGet("node/add/$bundle_id"); - $this->submitForm($values, $this->t('@text', ['@text' => $button_text])); + $this->submitForm($values, $button_text); $this->assertSession()->statusCodeEquals(200); } @@ -324,7 +324,7 @@ EOD; */ protected function postTermAddForm($taxomony_id, $values, $button_text) { $this->drupalGet("admin/structure/taxonomy/manage/$taxomony_id/add"); - $this->submitForm($values, $this->t('@text', ['@text' => $button_text])); + $this->submitForm($values, $button_text); $this->assertSession()->statusCodeEquals(200); } @@ -333,7 +333,7 @@ EOD; */ protected function postEntityEditForm($entity_url, $values, $button_text) { $this->drupalGet("$entity_url/edit"); - $this->submitForm($values, $this->t('@text', ['@text' => $button_text])); + $this->submitForm($values, $button_text); $this->assertSession()->statusCodeEquals(200); } diff --git a/tests/src/Functional/IslandoraSettingsFormTest.php b/tests/src/Functional/IslandoraSettingsFormTest.php index 80a327af..18bfcafb 100644 --- a/tests/src/Functional/IslandoraSettingsFormTest.php +++ b/tests/src/Functional/IslandoraSettingsFormTest.php @@ -38,23 +38,23 @@ class IslandoraSettingsFormTest extends IslandoraFunctionalTestBase { $this->assertSession()->fieldValueEquals('edit-jwt-expiry', '+2 hour'); $this->drupalGet('/admin/config/islandora/core'); // Blank is not allowed. - $this->submitForm(['edit-jwt-expiry' => ""], $this->t('Save configuration')); + $this->submitForm(['edit-jwt-expiry' => ""], 'Save configuration'); $this->assertSession()->pageTextContainsOnce('"" is not a valid time or interval expression.'); $this->drupalGet('/admin/config/islandora/core'); // Negative is not allowed. - $this->submitForm(['edit-jwt-expiry' => "-2 hours"], $this->t('Save configuration')); + $this->submitForm(['edit-jwt-expiry' => "-2 hours"], 'Save configuration'); $this->assertSession()->pageTextContainsOnce('Time or interval expression cannot be negative'); $this->drupalGet('/admin/config/islandora/core'); // Must include an integer value. - $this->submitForm(['edit-jwt-expiry' => "last hour"], $this->t('Save configuration')); + $this->submitForm(['edit-jwt-expiry' => "last hour"], 'Save configuration'); $this->assertSession()->pageTextContainsOnce('No numeric interval specified, for example "1 day"'); $this->drupalGet('/admin/config/islandora/core'); // Must have an accepted interval. - $this->submitForm(['edit-jwt-expiry' => "1 fortnight"], $this->t('Save configuration')); + $this->submitForm(['edit-jwt-expiry' => "1 fortnight"], 'Save configuration'); $this->assertSession()->pageTextContainsOnce('No time interval found, please include one of'); $this->drupalGet('/admin/config/islandora/core'); // Test a valid setting. - $this->submitForm(['edit-jwt-expiry' => "2 weeks"], $this->t('Save configuration')); + $this->submitForm(['edit-jwt-expiry' => "2 weeks"], 'Save configuration'); $this->assertSession()->pageTextContainsOnce('The configuration options have been saved.'); } diff --git a/tests/src/Functional/JsonldSelfReferenceReactionTest.php b/tests/src/Functional/JsonldSelfReferenceReactionTest.php index 1b4e24ec..c8acfcc9 100644 --- a/tests/src/Functional/JsonldSelfReferenceReactionTest.php +++ b/tests/src/Functional/JsonldSelfReferenceReactionTest.php @@ -60,7 +60,7 @@ class JsonldSelfReferenceReactionTest extends IslandoraFunctionalTestBase { $this->postNodeAddForm('test_type', ['title[0][value]' => 'Test Node'], - $this->t('Save')); + 'Save'); $this->assertSession()->pageTextContains("Test Node"); $url = $this->getUrl(); diff --git a/tests/src/Functional/JsonldTypeAlterReactionTest.php b/tests/src/Functional/JsonldTypeAlterReactionTest.php index 75ae41dd..6ac70d7d 100644 --- a/tests/src/Functional/JsonldTypeAlterReactionTest.php +++ b/tests/src/Functional/JsonldTypeAlterReactionTest.php @@ -32,13 +32,13 @@ class JsonldTypeAlterReactionTest extends JsonldSelfReferenceReactionTest { 'label' => 'Typed Predicate', 'field_name' => 'type_predicate', ], 'Save and continue'); - $this->submitForm([], $this->t('Save field settings')); + $this->submitForm([], 'Save field settings'); } - else { + elseif (version_compare(\Drupal::VERSION, '10.3.x-dev', 'lt')) { $this->getSession()->getPage()->selectFieldOption('new_storage_type', 'plain_text'); - // First need to submit the form with the elements displayed - // on initial page load. The form is using AJAX to send a second element - // after we selected the radio button above + // For Drupal 10.2, we first need to submit the form with the elements + // displayed on initial page load. The form is using AJAX to send a + // second element after we selected the radio button above // we can instead get the second element by submitting the form // and having it throw an error since the required field is missing. // @todo refactor this as a functional javascript test. @@ -46,7 +46,7 @@ class JsonldTypeAlterReactionTest extends JsonldSelfReferenceReactionTest { 'new_storage_type' => 'plain_text', 'label' => 'Typed Predicate', 'field_name' => 'type_predicate', - ], $this->t('Continue')); + ], 'Continue'); // Now we can proceed, selecting the plain text (i.e. string) // for the second element now that the element is displayed after @@ -57,16 +57,34 @@ class JsonldTypeAlterReactionTest extends JsonldSelfReferenceReactionTest { 'label' => 'Typed Predicate', 'field_name' => 'type_predicate', 'group_field_options_wrapper' => 'string', - ], $this->t('Continue')); + ], 'Continue'); + } + else { + $this->getSession()->getPage()->selectFieldOption('new_storage_type', 'plain_text'); + // For Drupal 10.3 the label is not visible at first. + // @todo refactor this as a functional javascript test. + $this->submitForm([ + 'new_storage_type' => 'plain_text', + ], 'Continue'); + + // Now we can proceed, entering a label and selecting Text (plain) + // for the second element now that the elements are displayed after + // the initial form submission. + $this->getSession()->getPage()->selectFieldOption('group_field_options_wrapper', 'string'); + $this->submitForm([ + 'label' => 'Typed Predicate', + 'field_name' => 'type_predicate', + 'group_field_options_wrapper' => 'string', + ], 'Continue'); } - $this->submitForm([], $this->t('Save settings')); + $this->submitForm([], 'Save settings'); $this->assertSession()->responseContains('field_type_predicate'); // Add the test node. $this->postNodeAddForm('test_type', [ 'title[0][value]' => 'Test Node', 'field_type_predicate[0][value]' => 'schema:Organization', - ], $this->t('Save')); + ], 'Save'); $this->assertSession()->pageTextContains("Test Node"); $url = $this->getUrl(); @@ -103,7 +121,7 @@ class JsonldTypeAlterReactionTest extends JsonldSelfReferenceReactionTest { $this->addCondition('test', 'islandora_entity_bundle'); $this->getSession()->getPage()->checkField("edit-conditions-islandora-entity-bundle-bundles-test-type"); $this->getSession()->getPage()->findById("edit-conditions-islandora-entity-bundle-context-mapping-node")->selectOption("@node.node_route_context:node"); - $this->getSession()->getPage()->pressButton($this->t('Save and continue')); + $this->getSession()->getPage()->pressButton('Save and continue'); // The first time a Context is saved, you need to clear the cache. // Subsequent changes to the context don't need a cache rebuild, though. diff --git a/tests/src/Functional/LinkHeaderTest.php b/tests/src/Functional/LinkHeaderTest.php index 98b36c68..78dd6c99 100644 --- a/tests/src/Functional/LinkHeaderTest.php +++ b/tests/src/Functional/LinkHeaderTest.php @@ -142,7 +142,7 @@ class LinkHeaderTest extends IslandoraFunctionalTestBase { $media_url = $this->media->toUrl('canonical', ['absolute' => TRUE])->toString(); // Perform a GET request as anonymous. - $this->drupalGet($media_url, [], ['Cache-Control: no-cache']); + $this->drupalGet($media_url, [], ['Cache-Control' => 'no-cache']); // Check link headers. $this->assertTrue( $this->validateLinkHeaderWithUrl('describes', $file_url, '', 'text/plain') == 1, @@ -174,7 +174,7 @@ class LinkHeaderTest extends IslandoraFunctionalTestBase { $this->drupalLogin($account); // Perform a GET request with update media permissions. - $this->drupalGet($media_url, [], ['Cache-Control: no-cache']); + $this->drupalGet($media_url, [], ['Cache-Control' => 'no-cache']); // Check link headers again, the edit-media link header should be present. $this->assertTrue( diff --git a/tests/src/Functional/ViewModeAlterReactionTest.php b/tests/src/Functional/ViewModeAlterReactionTest.php index 19660bda..90441402 100644 --- a/tests/src/Functional/ViewModeAlterReactionTest.php +++ b/tests/src/Functional/ViewModeAlterReactionTest.php @@ -75,7 +75,7 @@ class ViewModeAlterReactionTest extends IslandoraFunctionalTestBase { $this->drupalGet("admin/structure/context/test/reaction/add/view_mode_alter"); $this->getSession()->getPage()->findById("edit-reactions-view-mode-alter-mode")->selectOption('node.teaser'); - $this->getSession()->getPage()->pressButton($this->t('Save and continue')); + $this->getSession()->getPage()->pressButton('Save and continue'); $this->assertSession()->statusCodeEquals(200); drupal_flush_all_caches();