diff --git a/.dev/assets/development-environment.php b/.dev/assets/development-environment.php
deleted file mode 100644
index 846c97d93..000000000
--- a/.dev/assets/development-environment.php
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
- this document to set up your development environment.', 'go' ),
- array(
- 'a' => array(
- 'href' => array(),
- 'target' => array(),
- 'rel' => array(),
- ),
- )
- ),
- 'https://github.com/godaddy-wordpress/go/blob/master/docs/development-environment.md'
- );
- ?>
-
-
-
- {
- const entries = {};
-
- for ( const [ key, value ] of Object.entries( settings.entries ) ) {
- entries[ key ] = path.resolve( process.cwd(), value );
- }
-
- return entries;
-};
-
-module.exports = {
- ...defaultConfig,
- entry: configureEntries(),
- output: {
- ...defaultConfig.output,
- path: path.resolve( process.cwd(), settings.paths.dist.base ),
- filename: isProduction ? 'js/[name].min.js' : 'js/[name].js',
- },
-
- // Console stats output.
- // @link https://webpack.js.org/configuration/stats/#stats
- stats: settings.stats,
-
- // External objects.
- externals: {
- jquery: 'jQuery',
- react: "React",
- reactDom: "ReactDOM",
- },
-
- // Performance settings.
- performance: {
- maxAssetSize: settings.performance.maxAssetSize,
- },
-
- // Build rules to handle asset files.
- module: {
- rules: [
- // Scripts.
- {
- test: /\.js$/,
- exclude: /node_modules/,
- use: [
- {
- loader: 'babel-loader',
- options: {
- presets: [ '@babel/preset-env' ],
- cacheDirectory: true,
- sourceMap: ! isProduction,
- },
- },
- ],
- },
-
- // Styles.
- {
- test: /\.(sc|sa|c)ss$/,
- include: [
- path.resolve( process.cwd(), settings.paths.src.sharedCss ),
- path.resolve( process.cwd(), settings.paths.src.modernCss ),
- path.resolve( process.cwd(), settings.paths.src.traditionalCss ),
- path.resolve( process.cwd(), settings.paths.src.trendyCss ),
- path.resolve( process.cwd(), settings.paths.src.welcomingCss ),
- path.resolve( process.cwd(), settings.paths.src.playfulCss ),
- path.resolve( process.cwd(), settings.paths.src.adminCss ),
- ],
- use: [
- {
- loader: MiniCssExtractPlugin.loader,
- },
- {
- loader: 'css-loader',
- options: {
- sourceMap: ! isProduction,
- url: false,
- },
- },
- {
- loader: 'postcss-loader',
- options: {
- sourceMap: ! isProduction,
- },
- },
- {
- loader: 'sass-loader',
- options: {
- sourceMap: ! isProduction,
- },
- },
- ],
- },
- ],
- },
-
- plugins: [
- ...defaultConfig.plugins,
-
- // Clean the `dist` folder on build.
- new CleanWebpackPlugin( {
- cleanStaleWebpackAssets: false,
- } ),
-
- // Extract CSS into individual files.
- new MiniCssExtractPlugin( {
- filename: isProduction ? 'css/[name].min.css' : 'css/[name].css',
- chunkFilename: '[id].css',
- } ),
-
- // Copy static assets to the `dist` folder.
- new CopyWebpackPlugin( {
- patterns:[{
- from: settings.copyWebpackConfig.from,
- to: settings.copyWebpackConfig.to,
- }]
- } ),
-
- new ESLintPlugin(),
-
- // Lint SCSS.
- // new StyleLintPlugin( {
- // context: path.resolve( process.cwd(), settings.paths.src.base ),
- // files: '**/*.scss',
- // } ),
-
- // Fancy WebpackBar.
- new WebpackBar( {
- name: isProduction ? 'Building Go...' : 'Starting Go...',
- color: '#08757a',
- }),
- ],
-};
diff --git a/.dev/config/webpack.settings.js b/.dev/config/webpack.settings.js
deleted file mode 100644
index 68d6f1250..000000000
--- a/.dev/config/webpack.settings.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/* global module */
-
-// Webpack settings exports.
-module.exports = {
- entries: {
- // JS.
- 'frontend': './.dev/assets/shared/js/frontend/frontend.js',
-
- // CSS.
- 'style-editor': './.dev/assets/shared/css/style-editor.scss',
- 'style-shared': './.dev/assets/shared/css/style-shared.scss',
-
- // Design Style CSS.
- 'design-styles/style-modern': './.dev/assets/design-styles/modern/css/style-modern.scss',
- 'design-styles/style-modern-editor': './.dev/assets/design-styles/modern/css/style-modern-editor.scss',
- 'design-styles/style-traditional': './.dev/assets/design-styles/traditional/css/style-traditional.scss',
- 'design-styles/style-traditional-editor': './.dev/assets/design-styles/traditional/css/style-traditional-editor.scss',
- 'design-styles/style-trendy': './.dev/assets/design-styles/trendy/css/style-trendy.scss',
- 'design-styles/style-trendy-editor': './.dev/assets/design-styles/trendy/css/style-trendy-editor.scss',
- 'design-styles/style-welcoming': './.dev/assets/design-styles/welcoming/css/style-welcoming.scss',
- 'design-styles/style-welcoming-editor': './.dev/assets/design-styles/welcoming/css/style-welcoming-editor.scss',
- 'design-styles/style-playful': './.dev/assets/design-styles/playful/css/style-playful.scss',
- 'design-styles/style-playful-editor': './.dev/assets/design-styles/playful/css/style-playful-editor.scss',
-
- // Admin JS.
- 'admin/customize-controls': './.dev/assets/admin/js/customize-controls.js',
- 'admin/customize-preview': './.dev/assets/admin/js/customize-preview.js',
- 'admin/block-filters': './.dev/assets/admin/js/block-filters.js',
- 'admin/go-theme-deactivation': './.dev/assets/admin/js/go-deactivate-modal.js',
-
- // Admin CSS.
- 'admin/style-customize': './.dev/assets/admin/css/style-customize.scss',
- 'admin/style-go-theme-deactivation': './.dev/assets/admin/css/style-deactivate-modal.scss',
- },
- paths: {
- src: {
- base: './.dev/assets/',
- sharedBase: './.dev/assets/shared/',
- sharedCss: './.dev/assets/shared/css/',
- sharedJs: './.dev/assets/shared/js/',
- adminCss: './.dev/assets/admin/css',
- modernBase: './.dev/assets/design-styles/modern/',
- modernCss: './.dev/assets/design-styles/modern/css/',
- traditionalBase: './.dev/assets/design-styles/traditional/',
- traditionalCss: './.dev/assets/design-styles/traditional/css/',
- trendyBase: './.dev/assets/design-styles/trendy/',
- trendyCss: './.dev/assets/design-styles/trendy/css/',
- welcomingBase: '/.dev/assets/design-styles/welcoming/',
- welcomingCss: './.dev/assets/design-styles/welcoming/css/',
- playfulBase: './.dev/assets/design-styles/playful/',
- playfulCss: './.dev/assets/design-styles/playful/css/'
- },
- dist: {
- base: './dist/',
- clean: ['./images', './css', './js']
- },
- },
- stats: {
- all: false,
- errors: true,
- modules: true,
- warnings: true,
- assets: true,
- errorDetails: true,
- excludeAssets: /\.(jpe?g|png|gif|svg|woff|woff2|ttf)$/i,
- moduleTrace: true,
- performance: true
- },
- copyWebpackConfig: {
- from: '.dev/assets/**/*.{jpg,jpeg,png,gif,svg}',
- to({ context, absoluteFilename }) {
- // Remove everything before .dev/assets/, remove images/, remove shared/
- return 'images/' + absoluteFilename.replace( /^.*(\.dev\/assets\/)/g, '' ).replace( 'images/', '' ).replace( 'shared/', '' );
- },
- },
- BrowserSyncConfig: {
- host: 'localhost',
- port: 3000,
- proxy: 'https://go.test',
- open: false,
- files: [
- '**/*.php',
- 'dist/js/**/*.js',
- 'dist/css/**/*.css',
- 'dist/images/**/*.{jpg,jpeg,png,gif,svg}'
- ]
- },
- performance: {
- maxAssetSize: 100000
- },
- manifestConfig: {
- basePath: ''
- },
-};
diff --git a/.dev/husky/_/.gitignore b/.dev/husky/_/.gitignore
deleted file mode 100644
index f59ec20aa..000000000
--- a/.dev/husky/_/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
\ No newline at end of file
diff --git a/.dev/husky/pre-commit b/.dev/husky/pre-commit
deleted file mode 100755
index 36af21989..000000000
--- a/.dev/husky/pre-commit
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-. "$(dirname "$0")/_/husky.sh"
-
-npx lint-staged
diff --git a/.dev/tests/accessibility/compliance/pa11y.js b/.dev/tests/accessibility/compliance/pa11y.js
index 0335a095a..272d7bf44 100644
--- a/.dev/tests/accessibility/compliance/pa11y.js
+++ b/.dev/tests/accessibility/compliance/pa11y.js
@@ -62,7 +62,7 @@ const config = {
},
chromeLaunchConfig: {
ignoreHTTPSErrors: true,
- executablePath: '/usr/bin/google-chrome'
+ executablePath: process.env.CI && '/usr/bin/google-chrome',
}
};
diff --git a/.dev/tests/cypress/fixtures/images/150x150.png b/.dev/tests/cypress/fixtures/images/150x150.png
deleted file mode 100644
index d90352c31..000000000
Binary files a/.dev/tests/cypress/fixtures/images/150x150.png and /dev/null differ
diff --git a/.dev/tests/cypress/helpers.js b/.dev/tests/cypress/helpers.js
index 62db4b22e..d1260a39e 100644
--- a/.dev/tests/cypress/helpers.js
+++ b/.dev/tests/cypress/helpers.js
@@ -96,43 +96,3 @@ export function loginToSite() {
preserve: /wordpress_.*/,
} );
}
-
-/**
- * Upload helper object. Contains image fixture spec and uploader function.
- * `helpers.upload.newLogo` Function uploads the new logo.
- * `helpers.upload.spec` Object containing image spec.
- */
-export const upload = {
- /**
- * Upload image to input element and trigger replace image flow.
- *
- * @param {string} blockName The name of the block that is replace target
- * imageReplaceFlow works with CoBlocks Galleries: Carousel, Collage, Masonry, Offset, Stacked.
- */
- newLogo: () => {
- cy.get( '#customize-control-custom_logo' ).should( 'exist' );
-
- const imagePath = `../fixtures/images/150x150.png`;
-
- /* eslint-disable */
- cy.fixture( imagePath ).then( ( fileContent ) => {
- cy.get( '[class^="moxie"] [type="file"]' )
- .attachFile( { fileContent, filePath: imagePath, mimeType: 'image/png' }, { force: true } );
- } );
- /* eslint-enable */
- },
-
- spec: {
- fileName: '150x150.png',
- imageBase: '150x150',
- pathToFixtures: '../.dev/tests/cypress/fixtures/images/',
- },
-};
-
-/**
- * Save the customier settings.
- */
-export function saveCustomizerSettings () {
- cy.get( '#customize-header-actions input[type="submit"]' ).click().should( 'have.attr', 'disabled' );
- cy.get( '#publish-settings' ).should( 'not.be.visible' );
-};
diff --git a/.dev/tests/cypress/integration/customizer/customizer.spec.js b/.dev/tests/cypress/integration/customizer/customizer.spec.js
deleted file mode 100644
index bf140450d..000000000
--- a/.dev/tests/cypress/integration/customizer/customizer.spec.js
+++ /dev/null
@@ -1,144 +0,0 @@
-import { loginToSite, upload, saveCustomizerSettings } from '../../helpers';
-
-describe( 'Test the customizer works as intended.', () => {
-
- let atts = {
- title: 'Custom Title',
- tagline: 'Custom Tagline',
- };
-
- const designStyles = [
- 'Traditional',
- 'Modern',
- 'Trendy',
- 'Welcoming',
- 'Playful',
- ];
-
- let headerCount = 7;
-
- let footerCount = 4;
-
- const socialAccounts = {
- facebook: 'https://www.facebook.com',
- twitter: 'https://www.twitter.com',
- instagram: 'https://www.instagram.com',
- linkedin: 'https://www.linkedin.com',
- xing: 'https://www.xing.com',
- pinterest: 'https://www.pinterest.com',
- youtube: 'https://www.youtube.com',
- spotify: 'https://www.spotify.com',
- github: 'https://www.github.com',
- tiktok: 'https://www.tiktok.com',
- mastodon: 'https://mastodon.social',
- };
-
- before( () => {
- loginToSite();
- } );
-
- beforeEach( () => {
- cy.visit( Cypress.env( 'localTestURL' ) + '/wp-admin/customize.php' );
- cy.get( 'body' ).should( 'have.class', 'wp-customizer' );
- cy.frameLoaded( '[name="customize-preview-0"]' );
- } );
-
- it( 'Test Site title, description and a custom logo', () => {
- cy.get( '#accordion-section-title_tagline' ).click();
-
- // Custom Logo
- cy.get( '#customize-control-custom_logo .attachment-media-view .upload-button' ).click();
- upload.newLogo();
- cy.get( '.media-frame-toolbar .media-toolbar-primary button.button-primary' ).should( 'not.have.class', 'disabled' ).click();
- cy.get( '.media-toolbar button.button-secondary' ).contains( 'Skip cropping' ).click();
-
- // Site Title
- cy.get( '#_customize-input-blogname' ).clear().type( atts.title );
-
- // Site Tagline
- cy.get( '#_customize-input-blogdescription' ).clear().type( atts.tagline );
-
- saveCustomizerSettings();
-
- cy.reload();
-
- cy.frameLoaded( '[name="customize-preview-0"]' );
- cy.iframe( 'iframe[name="customize-preview-0"]' ).find( '.custom-logo-link img' ).should( 'have.attr', 'src' ).and( 'match', /150x150/ );
- cy.iframe( 'iframe[name="customize-preview-0"]' ).find( 'h1.site-title' ).contains( atts.title );
- cy.iframe( 'iframe[name="customize-preview-0"]' ).find( 'span.site-description' ).contains( atts.tagline );
-
- // Test Hidden title and tagline
- cy.get( '#accordion-section-title_tagline' ).click();
- cy.get( '#_customize-input-hide_site_title_checkbox' ).click();
- cy.get( '#_customize-input-hide_site_tagline_checkbox' ).click();
- saveCustomizerSettings();
-
- cy.reload();
-
- cy.iframe( 'iframe[name="customize-preview-0"]' ).find( 'h1#site-title' ).should( 'not.exist' );
- cy.iframe( 'iframe[name="customize-preview-0"]' ).find( 'span.site-description' ).should( 'not.exist' );
- } );
-
- it( 'Should switch design styles as intended', () => {
- // Start at the bottom of the list
- designStyles.reverse().forEach( designStyle => {
- cy.get( '#accordion-section-colors' ).click();
- cy.get( 'label[for="_customize-input-design_style_control-radio-' + designStyle.toLowerCase() + '"]' ).click( { force: true } );
-
- // Wait for the submit button to be ready.
- cy.get('.publish-settings', { timeout: 10000 }).should('be.visible');
- saveCustomizerSettings();
- cy.reload();
- cy.frameLoaded( '[name="customize-preview-0"]' );
- cy.iframe( 'iframe[name="customize-preview-0"]' ).should( 'have.class', 'is-style-' + designStyle.toLowerCase() );
- } );
- } );
-
- it( 'Should switch headers as intended', () => {
- while ( headerCount >= 1 ) {
- cy.get( '#accordion-section-go_header_settings' ).click();
- cy.get( 'label[for="header_variation_control-header-' + headerCount + '"]' ).click();
- saveCustomizerSettings();
- cy.reload();
- cy.frameLoaded( '[name="customize-preview-0"]' );
- cy.iframe( 'iframe[name="customize-preview-0"]' ).should( 'have.class', 'has-header-' + headerCount );
- headerCount--;
- }
- } );
-
- it( 'Should switch footers as intended', () => {
- while ( footerCount >= 1 ) {
- cy.get( '#accordion-section-go_footer_settings' ).click();
- cy.get( 'label[for="footer_variation_control-footer-' + footerCount + '"]' ).click();
- saveCustomizerSettings();
- cy.reload();
- cy.frameLoaded( '[name="customize-preview-0"]' );
- cy.iframe( 'iframe[name="customize-preview-0"]' ).should( 'have.class', 'has-footer-' + footerCount );
- footerCount--;
- }
- } );
-
- it( 'Should show social icons and set the URL', () => {
- cy.get( '#accordion-section-go_social_media' ).click();
-
- // Check icons do not show on page when no input is present
- cy.get( '#_customize-input-social_icon_github_control' ).should( 'have.value', '' );
-
- cy.frameLoaded( '[name="customize-preview-0"]' );
- cy.iframe( 'iframe[name="customize-preview-0"]' ).find( 'ul.social-icons > .social-icon-github' ).should( 'not.be.visible' );
-
- for ( const socialNetworkName in socialAccounts ) {
- cy.get( `#_customize-input-social_icon_${socialNetworkName}_control` ).clear().type( socialAccounts[ socialNetworkName ] );
- }
-
- saveCustomizerSettings();
- cy.reload();
-
- // Check that the social icons are visible in the footer (header 1 has no social icons visible)
- cy.frameLoaded( '[name="customize-preview-0"]' );
- for ( const socialNetworkName in socialAccounts ) {
- cy.iframe( 'iframe[name="customize-preview-0"]' ).find( `footer ul.social-icons > .social-icon-${socialNetworkName}` ).should( 'be.visible' );
- }
- } );
-
-} );
diff --git a/.dev/tests/php/classes/customizer/test-class-range-control.php b/.dev/tests/php/classes/customizer/test-class-range-control.php
deleted file mode 100644
index 24c58066e..000000000
--- a/.dev/tests/php/classes/customizer/test-class-range-control.php
+++ /dev/null
@@ -1,99 +0,0 @@
-factory->user->create( [ 'role' => 'administrator' ] ) );
-
- require_once( ABSPATH . WPINC . '/class-wp-customize-manager.php' );
-
- global $wp_customize;
-
- $GLOBALS['wp_customize'] = new WP_Customize_Manager();
- $GLOBALS['wp_customize']->setup_theme();
- $GLOBALS['wp_customize']->register_controls();
-
- require_once get_parent_theme_file_path( 'includes/classes/customizer/class-range-control.php' );
-
- }
-
- function tearDown(): void {
-
- parent::tearDown();
-
- }
-
- /**
- * Test the type property returns as expected
- */
- function test_range_control_property_type() {
-
- $this->assertEquals( 'go_range_control', ( new Go\Customizer\Range_Control( $GLOBALS['wp_customize'], 'control-id' ) )->type );
-
- }
-
- /**
- * Test that go-customize-controls is enqueued
- */
- function test_range_control_enqueue_go_customizer_controls() {
-
- ( new Go\Customizer\Range_Control( $GLOBALS['wp_customize'], 'control-id' ) )->enqueue();
-
- global $wp_scripts;
-
- $this->assertArrayHasKey( 'go-customize-controls', $wp_scripts->registered );
-
- }
-
- /**
- * Test that go-customize-style is enqueued
- */
- function test_range_control_enqueue_go_customizer_styles() {
-
- ( new Go\Customizer\Range_Control( $GLOBALS['wp_customize'], 'control-id' ) )->enqueue();
-
- global $wp_styles;
-
- $this->assertArrayHasKey( 'go-customize-style', $wp_styles->registered );
-
- }
-
- /**
- * Test that to_json returns as expected
- */
- function test_range_control_to_json() {
-
- $GLOBALS['wp_customize']->add_setting(
- 'logo_width_mobile',
- [
- 'default' => 100,
- 'transport' => 'postMessage',
- 'sanitize_callback' => 'absint',
- ]
- );
-
- $range_class = new Go\Customizer\Range_Control( $GLOBALS['wp_customize'], 'logo_width_mobile', [ 'settings' => 'logo_width_mobile' ] );
-
- $range_class->to_json();
-
- $this->assertEquals( '', $range_class->json['content'] );
-
- }
-
- /**
- * Test that content_template returns expected markup
- */
- function test_range_control_content_template() {
-
- $this->expectOutputRegex( '//' );
-
- $method = new ReflectionMethod( 'Go\Customizer\Range_Control', 'content_template' );
- $method->setAccessible( true );
-
- $method->invoke( new Go\Customizer\Range_Control( $GLOBALS['wp_customize'], 'control-id' ) );
-
- }
-}
diff --git a/.dev/tests/php/classes/customizer/test-class-switcher-control.php b/.dev/tests/php/classes/customizer/test-class-switcher-control.php
deleted file mode 100644
index edecdd54b..000000000
--- a/.dev/tests/php/classes/customizer/test-class-switcher-control.php
+++ /dev/null
@@ -1,128 +0,0 @@
-factory->user->create( [ 'role' => 'administrator' ] ) );
-
- require_once( ABSPATH . WPINC . '/class-wp-customize-manager.php' );
-
- global $wp_customize;
-
- $GLOBALS['wp_customize'] = new WP_Customize_Manager();
- $GLOBALS['wp_customize']->setup_theme();
- $GLOBALS['wp_customize']->register_controls();
-
- require_once get_parent_theme_file_path( 'includes/classes/customizer/class-switcher-control.php' );
-
- }
-
- function tearDown(): void {
-
- parent::tearDown();
-
- }
-
- /**
- * Test the switcher_type property returns as expected
- */
- function test_switcher_control_property_switcher_type() {
-
- $switcher_class = new Go\Customizer\Switcher_Control( $GLOBALS['wp_customize'], 'control-id' );
- $reflection = new ReflectionClass( $switcher_class );
- $property = $reflection->getProperty( 'switcher_type' );
-
- $property->setAccessible( true );
-
- $this->assertEquals( 'default', $property->getValue( $switcher_class ) );
-
- }
-
- /**
- * Test the type property returns as expected
- */
- function test_switcher_control_property_type() {
-
- $this->assertEquals( 'go_switcher_control', ( new Go\Customizer\Switcher_Control( $GLOBALS['wp_customize'], 'control-id' ) )->type );
-
- }
-
- /**
- * Test the type property returns as expected when a custom switcher_type is passed into the args
- */
- function test_switcher_control_property_switcher_type_custom() {
-
- $switcher_class = new Go\Customizer\Switcher_Control( $GLOBALS['wp_customize'], 'control-id', [ 'switcher_type' => 'custom-switcher-type' ] );
- $reflection = new ReflectionClass( $switcher_class );
- $property = $reflection->getProperty( 'switcher_type' );
-
- $property->setAccessible( true );
-
- $this->assertEquals( 'custom-switcher-type', $property->getValue( $switcher_class ) );
-
- }
-
- /**
- * Test that go-customize-controls is enqueued
- */
- function test_switcher_control_enqueue_go_customizer_controls() {
-
- ( new Go\Customizer\Switcher_Control( $GLOBALS['wp_customize'], 'control-id' ) )->enqueue();
-
- global $wp_scripts;
-
- $this->assertArrayHasKey( 'go-customize-controls', $wp_scripts->registered );
-
- }
-
- /**
- * Test that go-customize-style is enqueued
- */
- function test_switcher_control_enqueue_go_customizer_styles() {
-
- ( new Go\Customizer\Switcher_Control( $GLOBALS['wp_customize'], 'control-id' ) )->enqueue();
-
- global $wp_styles;
-
- $this->assertArrayHasKey( 'go-customize-style', $wp_styles->registered );
-
- }
-
- /**
- * Test that to_json returns as expected
- */
- function test_switcher_control_to_json() {
-
- $GLOBALS['wp_customize']->add_setting(
- 'color_scheme',
- [
- 'transport' => 'postMessage',
- 'default' => 'one',
- ]
- );
-
- $switcher_class = new Go\Customizer\Switcher_Control( $GLOBALS['wp_customize'], 'default', [ 'settings' => 'color_scheme', ] );
-
- $switcher_class->to_json();
-
- $this->assertEquals( '', $switcher_class->json['content'] );
-
- }
-
- /**
- * Test that content_template returns expected markup
- */
- function test_switcher_control_content_template() {
-
- $this->expectOutputRegex( '/<\/span>/' );
-
- $method = new ReflectionMethod( 'Go\Customizer\Switcher_Control', 'content_template' );
- $method->setAccessible( true );
-
- $method->invoke( new Go\Customizer\Switcher_Control( $GLOBALS['wp_customize'], 'control-id' ) );
-
- }
-}
diff --git a/.dev/tests/php/classes/customizer/test-title-control.php b/.dev/tests/php/classes/customizer/test-title-control.php
deleted file mode 100644
index cc4dbca7b..000000000
--- a/.dev/tests/php/classes/customizer/test-title-control.php
+++ /dev/null
@@ -1,84 +0,0 @@
-factory->user->create( [ 'role' => 'administrator' ] ) );
-
- require_once( ABSPATH . WPINC . '/class-wp-customize-manager.php' );
-
- global $wp_customize;
-
- $GLOBALS['wp_customize'] = new WP_Customize_Manager();
- $GLOBALS['wp_customize']->setup_theme();
- $GLOBALS['wp_customize']->register_controls();
-
- require_once get_parent_theme_file_path( 'includes/classes/customizer/class-title-control.php' );
-
- }
-
- function tearDown(): void {
-
- parent::tearDown();
-
- }
-
- protected static function getMethod( $name ) {
- $class = new ReflectionClass( 'Go\Customizer\Title_Control' );
- $method = $class->getMethod($name);
- $method->setAccessible(true);
- return $method;
- }
-
- /**
- * Test the switcher_type property returns as expected
- */
- function test_title_control_property_switcher_type() {
-
- $switcher_class = new Go\Customizer\Title_Control( $GLOBALS['wp_customize'], 'control-id' );
- $reflection = new ReflectionClass( $switcher_class );
- $property = $reflection->getProperty( 'switcher_type' );
-
- $property->setAccessible( true );
-
- $this->assertEquals( 'default', $property->getValue( $switcher_class ) );
-
- }
-
- /**
- * Test the type property returns as expected
- */
- function test_title_control_property_type() {
-
- $this->assertEquals( 'go_title', ( new Go\Customizer\Title_Control( $GLOBALS['wp_customize'], 'control-id' ) )->type );
-
- }
-
- /**
- * Test render_content method exists
- */
- function test_title_control_render_content_method() {
-
- $this->assertTrue( method_exists( new Go\Customizer\Title_Control( $GLOBALS['wp_customize'], 'control-id' ), 'render_content' ) );
-
- }
-
- /**
- * Test content_template method returns expected markup
- */
- function test_title_control_content_template() {
-
- $class = new ReflectionClass( 'Go\Customizer\Title_Control' );
- $method = $class->getMethod( 'content_template' );
-
- $method->setAccessible( true );
-
- $this->expectOutputRegex( '/<# if \( data.label \) { #>\\n[\n\r\s]+{{ data.label }}<\/span>\\n[\n\r\s]+<# } #>\\n[\n\r\s]+<# if \( data.description \) { #>\\n[\n\r\s]+{{ data.description }}<\/em>\\n[\n\r\s]+<# } #>/' );
-
- $method->invokeArgs( new Go\Customizer\Title_Control( $GLOBALS['wp_customize'], 'control-id' ), [] );
-
- }
-}
diff --git a/.dev/tests/php/test-amp.php b/.dev/tests/php/test-amp.php
deleted file mode 100644
index 1783b9caa..000000000
--- a/.dev/tests/php/test-amp.php
+++ /dev/null
@@ -1,130 +0,0 @@
-assertEquals(
- 10,
- has_action( 'walker_nav_menu_start_el', 'Go\AMP\amp_nav_sub_menu_buttons' ),
- 'walker_nav_menu_start_el is not attached to Go\AMP\amp_nav_sub_menu_buttons. It might also have the wrong priority (validated priority: 10)'
- );
-
- }
-
- /**
- * Test the hooked amp_body_class
- */
- function test_hooked_amp_body_class() {
-
- $this->assertEquals(
- 10,
- has_action( 'body_class', 'Go\AMP\amp_body_class' ),
- 'body_class is not attached to Go\AMP\amp_body_class. It might also have the wrong priority (validated priority: 10)'
- );
-
- }
-
- /**
- * Test amp_body_class does not append amp when ! is_amp()
- */
- function test_amp_body_class_non_amp() {
-
- $this->assertTrue( ! in_array( 'amp', get_body_class(), true ) );
-
- }
-
- /**
- * Test amp_body_class appends amp when is_amp()
- */
- function test_amp_body_class_amp() {
-
- add_filter( 'go_is_amp', '__return_true' );
-
- $this->assertTrue( in_array( 'amp', get_body_class(), true ) );
-
- }
-
- /**
- * Test amp_nav_sub_menu_buttons returns original output when ! is_amp()
- */
- function test_amp_nav_sub_menu_buttons_non_amp() {
-
- $nav_menu_item = $this->factory->post->create(
- [
- 'post_title' => 'Nav Menu Item',
- 'post_type' => 'nav_menu_item'
- ]
- );
-
- $output = Go\AMP\amp_nav_sub_menu_buttons( 'Blog', get_post( $nav_menu_item ), 1, new stdClass() );
-
- $this->assertEquals( 'Blog', $output );
-
- }
-
- /**
- * Test amp_nav_sub_menu_buttons returns correct output when is_amp()
- */
- function test_amp_nav_sub_menu_buttons_amp() {
-
- add_filter( 'go_is_amp', '__return_true' );
-
- $nav_menu_item = $this->factory->post->create(
- [
- 'post_title' => 'Nav Menu Item',
- 'post_type' => 'nav_menu_item'
- ]
- );
-
- $post = get_post( $nav_menu_item );
- $post->classes = [ 'menu-item-has-children' ];
-
- $menu_args = new stdClass();
- $menu_args->theme_location = 'primary';
-
- $output = Go\AMP\amp_nav_sub_menu_buttons( 'Blog', $post, 1, $menu_args );
-
- $this->assertMatchesRegularExpression( '/