diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e1a8c11206aab3584684fc0d95846855c645a872
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,50 @@
+################
+# DrupalCI GitLabCI template
+#
+# Gitlab-ci.yml to replicate DrupalCI testing for Contrib
+#
+# With thanks to:
+#   * The GitLab Acceleration Initiative participants
+#   * DrupalSpoons
+################
+
+################
+# Guidelines
+#
+# This template is designed to give any Contrib maintainer everything they need to test, without requiring modification. It is also designed to keep up to date with Core Development automatically through the use of include files that can be centrally maintained.
+#
+# However, you can modify this template if you have additional needs for your project.
+################
+
+################
+# Includes
+#
+# Additional configuration can be provided through includes.
+# One advantage of include files is that if they are updated upstream, the changes affect all pipelines using that include.
+#
+# Includes can be overridden by re-declaring anything provided in an include, here in gitlab-ci.yml
+# https://docs.gitlab.com/ee/ci/yaml/includes.html#override-included-configuration-values
+################
+
+include:
+  ################
+  # DrupalCI includes:
+  # As long as you include this, any future includes added by the Drupal Association will be accessible to your pipelines automatically.
+  # View these include files at https://git.drupalcode.org/project/gitlab_templates/
+  ################
+  - project: $_GITLAB_TEMPLATES_REPO
+    ref: $_GITLAB_TEMPLATES_REF
+    file:
+      - '/includes/include.drupalci.main.yml'
+      - '/includes/include.drupalci.variables.yml'
+      - '/includes/include.drupalci.workflows.yml'
+
+################
+# Pipeline configuration variables
+#
+# These are the variables provided to the Run Pipeline form that a user may want to override.
+#
+# Docs at https://git.drupalcode.org/project/gitlab_templates/-/blob/1.0.x/includes/include.drupalci.variables.yml
+################
+variables:
+  SKIP_PHPSTAN: 1
diff --git a/phpstan.neon b/phpstan.neon
new file mode 100644
index 0000000000000000000000000000000000000000..51f2077c067eee45bd0d029bb3847212b33c4bc4
--- /dev/null
+++ b/phpstan.neon
@@ -0,0 +1,11 @@
+# Configuration file for PHPStan static code checking, see https://phpstan.org.
+includes:
+  - phar://phpstan.phar/conf/bleedingEdge.neon
+
+parameters:
+  level: 1
+  paths:
+    - .
+  ignoreErrors:
+    # new static() is a best practice in Drupal, so we cannot fix that.
+    - "#^Unsafe usage of new static#"
diff --git a/tests/modules/inline_entity_form_test/config/install/field.field.node.ief_test_nested1.test_ref_nested1.yml b/tests/modules/inline_entity_form_test/config/install/field.field.node.ief_test_nested1.test_ref_nested1.yml
index 167d91778edb5fa68651754b50760d1ea016d4bc..de303e6531878bcea830aa84bff8324c163ad025 100644
--- a/tests/modules/inline_entity_form_test/config/install/field.field.node.ief_test_nested1.test_ref_nested1.yml
+++ b/tests/modules/inline_entity_form_test/config/install/field.field.node.ief_test_nested1.test_ref_nested1.yml
@@ -4,9 +4,6 @@ dependencies:
   config:
     - field.storage.node.test_ref_nested1
     - node.type.ief_test_nested1
-  module:
-    - inline_entity_form_test
-    - entity_reference
   enforced:
     module:
       - inline_entity_form_test
@@ -14,18 +11,17 @@ id: node.ief_test_nested1.test_ref_nested1
 field_name: test_ref_nested1
 entity_type: node
 bundle: ief_test_nested1
-label: Multiple nodes
+label: 'Multiple nodes'
 description: 'Reference multiple nodes.'
 required: true
 translatable: false
 default_value: {  }
 default_value_callback: ''
 settings:
-  handler: default:node
+  handler: 'default:node'
   handler_settings:
     target_bundles:
       ief_reference_type: ief_test_nested2
     sort:
       field: _none
-third_party_settings: {  }
 field_type: entity_reference
diff --git a/tests/modules/inline_entity_form_test/config/install/field.field.node.ief_test_nested2.test_ref_nested2.yml b/tests/modules/inline_entity_form_test/config/install/field.field.node.ief_test_nested2.test_ref_nested2.yml
index 0b18216e1430b4476e8bb861e29502bc19a1f294..bce2f3645d2e5caf3007d51297660abe88d88ad5 100644
--- a/tests/modules/inline_entity_form_test/config/install/field.field.node.ief_test_nested2.test_ref_nested2.yml
+++ b/tests/modules/inline_entity_form_test/config/install/field.field.node.ief_test_nested2.test_ref_nested2.yml
@@ -4,9 +4,6 @@ dependencies:
   config:
     - field.storage.node.test_ref_nested2
     - node.type.ief_test_nested2
-  module:
-    - inline_entity_form_test
-    - entity_reference
   enforced:
     module:
       - inline_entity_form_test
@@ -14,18 +11,17 @@ id: node.ief_test_nested2.test_ref_nested2
 field_name: test_ref_nested2
 entity_type: node
 bundle: ief_test_nested2
-label: Multiple nodes
+label: 'Multiple nodes'
 description: 'Reference multiple nodes.'
 required: true
 translatable: false
 default_value: {  }
 default_value_callback: ''
 settings:
-  handler: default:node
+  handler: 'default:node'
   handler_settings:
     target_bundles:
       ief_reference_type: ief_test_nested3
     sort:
       field: _none
-third_party_settings: {  }
 field_type: entity_reference
diff --git a/tests/modules/inline_entity_form_test/config/install/field.storage.node.test_ref_nested1.yml b/tests/modules/inline_entity_form_test/config/install/field.storage.node.test_ref_nested1.yml
index 323cecc475a0c4729c26ad819349a879b68e94f3..aee1d405bd373c65979db1f0606c13e593edb94f 100644
--- a/tests/modules/inline_entity_form_test/config/install/field.storage.node.test_ref_nested1.yml
+++ b/tests/modules/inline_entity_form_test/config/install/field.storage.node.test_ref_nested1.yml
@@ -2,8 +2,6 @@ langcode: und
 status: true
 dependencies:
   module:
-    - inline_entity_form_test
-    - entity_reference
     - node
   enforced:
     module:
@@ -14,9 +12,10 @@ entity_type: node
 type: entity_reference
 settings:
   target_type: node
-module: entity_reference
+module: core
 locked: false
 cardinality: -1
 translatable: false
 indexes: {  }
 persist_with_no_fields: false
+custom_storage: false
diff --git a/tests/modules/inline_entity_form_test/config/install/field.storage.node.test_ref_nested2.yml b/tests/modules/inline_entity_form_test/config/install/field.storage.node.test_ref_nested2.yml
index 4aaf0aaf95735b8035cacc6fd780c0f2ff6ba7bf..8edc2522fd56cd6fbd41926af952bf2942f70d90 100644
--- a/tests/modules/inline_entity_form_test/config/install/field.storage.node.test_ref_nested2.yml
+++ b/tests/modules/inline_entity_form_test/config/install/field.storage.node.test_ref_nested2.yml
@@ -2,8 +2,6 @@ langcode: und
 status: true
 dependencies:
   module:
-    - inline_entity_form_test
-    - entity_reference
     - node
   enforced:
     module:
@@ -14,9 +12,10 @@ entity_type: node
 type: entity_reference
 settings:
   target_type: node
-module: entity_reference
+module: core
 locked: false
 cardinality: -1
 translatable: false
 indexes: {  }
 persist_with_no_fields: false
+custom_storage: false
diff --git a/tests/src/FunctionalJavascript/ElementWebTest.php b/tests/src/FunctionalJavascript/ElementWebTest.php
index d1778462c95a4a4108725da3e4035bbbd173b023..b974118bb3f44aa6f8ba583df5f047315a660c78 100644
--- a/tests/src/FunctionalJavascript/ElementWebTest.php
+++ b/tests/src/FunctionalJavascript/ElementWebTest.php
@@ -62,13 +62,13 @@ class ElementWebTest extends InlineEntityFormTestBase {
       $this->assertNoNodeByTitle($title);
 
       $assert_session->elementExists('xpath', $title_field_xpath)->setValue($title);
-      $assert_session->elementExists('xpath', $positive_int_field_xpath)->setValue(-1);
+      $assert_session->elementExists('xpath', $positive_int_field_xpath)->setValue('-1');
 
       $page->pressButton('Save');
       $assert_session->pageTextNotContains("Created Content $title");
       $this->assertNoNodeByTitle($title);
 
-      $assert_session->elementExists('xpath', $positive_int_field_xpath)->setValue(11);
+      $assert_session->elementExists('xpath', $positive_int_field_xpath)->setValue('11');
       $page->pressButton('Save');
       $assert_session->pageTextContains("Created Content $title");
       $this->assertNodeByTitle($title, 'ief_test_custom');
diff --git a/tests/src/FunctionalJavascript/SimpleWidgetTest.php b/tests/src/FunctionalJavascript/SimpleWidgetTest.php
index 69d83975a0b7708cab69c1d4a4f60b949cb9031d..9f61d723c12df32430b34af5d2685f873b34ad58 100644
--- a/tests/src/FunctionalJavascript/SimpleWidgetTest.php
+++ b/tests/src/FunctionalJavascript/SimpleWidgetTest.php
@@ -76,7 +76,7 @@ class SimpleWidgetTest extends InlineEntityFormTestBase {
         $assert_session->buttonNotExists('Add another item');
         $assert_session->elementExists('xpath', $title_field_xpath)->setValue('Host node');
         $assert_session->elementExists('xpath', $first_nested_title_field_xpath)->setValue('Nested single node');
-        $assert_session->elementExists('xpath', $first_positive_int_field_xpath)->setValue(42);
+        $assert_session->elementExists('xpath', $first_positive_int_field_xpath)->setValue('42');
         $page->pressButton('Save');
         $assert_session->pageTextContains('IEF simple single Host node has been created.');
         $host_node = $this->getNodeByTitle('Host node');
@@ -86,9 +86,9 @@ class SimpleWidgetTest extends InlineEntityFormTestBase {
         $assert_session->buttonNotExists('Add another item');
         $assert_session->elementExists('xpath', $title_field_xpath)->setValue('Host node 2');
         $assert_session->elementExists('xpath', $first_nested_title_field_xpath)->setValue('Nested single node 2');
-        $assert_session->elementExists('xpath', $first_positive_int_field_xpath)->setValue(42);
+        $assert_session->elementExists('xpath', $first_positive_int_field_xpath)->setValue('42');
         $assert_session->elementExists('xpath', $second_nested_title_field_xpath)->setValue('Nested single node 3');
-        $assert_session->elementExists('xpath', $second_positive_int_field_xpath)->setValue(42);
+        $assert_session->elementExists('xpath', $second_positive_int_field_xpath)->setValue('42');
         $page->pressButton('Save');
         $assert_session->pageTextContains('IEF simple single Host node 2 has been created.');
         $host_node = $this->getNodeByTitle('Host node 2');
@@ -98,7 +98,7 @@ class SimpleWidgetTest extends InlineEntityFormTestBase {
         // and an 'Add another item' button should appear.
         $assert_session->elementExists('xpath', $title_field_xpath)->setValue('Host node 3');
         $assert_session->elementExists('xpath', $first_nested_title_field_xpath)->setValue('Nested single node 4');
-        $assert_session->elementExists('xpath', $first_positive_int_field_xpath)->setValue(42);
+        $assert_session->elementExists('xpath', $first_positive_int_field_xpath)->setValue('42');
         $assert_session->elementNotExists('xpath', $second_positive_int_field_xpath);
 
         // Press the 'add another item' button and add a second item.
@@ -107,7 +107,7 @@ class SimpleWidgetTest extends InlineEntityFormTestBase {
         // Assert an extra item isn't added at the same time.
         $assert_session->elementNotExists('xpath', $third_nested_title_field_xpath);
         $assert_session->elementExists('xpath', $second_nested_title_field_xpath)->setValue('Nested single node 5');
-        $assert_session->elementExists('xpath', $second_positive_int_field_xpath)->setValue(42);
+        $assert_session->elementExists('xpath', $second_positive_int_field_xpath)->setValue('42');
 
         // Press the 'add another item' button and add a third item.
         $assert_session->buttonExists('Add another item')->press();
@@ -115,7 +115,7 @@ class SimpleWidgetTest extends InlineEntityFormTestBase {
         // Assert an extra item isn't added at the same time.
         $assert_session->elementNotExists('xpath', $fourth_nested_title_field_xpath);
         $assert_session->elementExists('xpath', $third_nested_title_field_xpath)->setValue('Nested single node 6');
-        $assert_session->elementExists('xpath', $third_positive_int_field_xpath)->setValue(42);
+        $assert_session->elementExists('xpath', $third_positive_int_field_xpath)->setValue('42');
         $page->pressButton('Save');
         $assert_session->pageTextContains('IEF simple single Host node 3 has been created.');
         $host_node = $this->getNodeByTitle('Host node 3');
@@ -156,14 +156,14 @@ class SimpleWidgetTest extends InlineEntityFormTestBase {
 
     $child_title = 'Child node ' . $this->randomString();
     $assert_session->elementExists('xpath', $nested_title_field_xpath)->setValue($child_title);
-    $assert_session->elementExists('xpath', $positive_int_field_xpath)->setValue(-1);
+    $assert_session->elementExists('xpath', $positive_int_field_xpath)->setValue('-1');
     $page->pressButton('Save');
     // Assert field validation fires on Inline Entity Form widget.
     $assert_session->pageTextNotContains('IEF simple single Host Validation Node has been created.');
     // Assert that we're still on form due to to validation error.
     $this->assertSession()->addressEquals('node/add/ief_simple_single');
 
-    $assert_session->elementExists('xpath', $positive_int_field_xpath)->setValue(1);
+    $assert_session->elementExists('xpath', $positive_int_field_xpath)->setValue('1');
     $page->pressButton('Save');
     // Assert title validation passes on Inline Entity Form widget.
     $assert_session->pageTextNotContains('Title field is required.');