├── resources ├── views │ ├── cart │ │ ├── queries │ │ │ ├── cart.graphql │ │ │ ├── partials │ │ │ │ └── customizable-options.graphql │ │ │ └── fragments │ │ │ │ └── product.graphql │ │ ├── coupon.blade.php │ │ ├── coupon │ │ │ ├── list.blade.php │ │ │ └── add.blade.php │ │ └── item │ │ │ ├── remove.blade.php │ │ │ └── quantity.blade.php │ ├── components │ │ ├── input │ │ │ ├── input.blade.php │ │ │ ├── swatch │ │ │ │ ├── text.blade.php │ │ │ │ └── visual.blade.php │ │ │ ├── select │ │ │ │ ├── country.blade.php │ │ │ │ └── region.blade.php │ │ │ └── password │ │ │ │ └── password.blade.php │ │ ├── summary.blade.php │ │ ├── button │ │ │ ├── toggle.blade.php │ │ │ ├── base.blade.php │ │ │ ├── cart.blade.php │ │ │ └── tag.blade.php │ │ ├── breadcrumbs.blade.php │ │ ├── autocomplete │ │ │ ├── title.blade.php │ │ │ └── magnifying-glass.blade.php │ │ ├── highlight.blade.php │ │ ├── no-image.blade.php │ │ ├── recaptcha.blade.php │ │ ├── breadcrumb.blade.php │ │ ├── accordion │ │ │ └── filter.blade.php │ │ ├── cookie-notice.blade.php │ │ └── slideover │ │ │ └── global.blade.php │ ├── layouts │ │ ├── config.blade.php │ │ ├── partials │ │ │ ├── footer │ │ │ │ ├── copyright.blade.php │ │ │ │ └── social.blade.php │ │ │ ├── head │ │ │ │ └── hreflang.blade.php │ │ │ ├── header │ │ │ │ └── autocomplete │ │ │ │ │ ├── results.blade.php │ │ │ │ │ ├── all-results.blade.php │ │ │ │ │ └── categories.blade.php │ │ │ ├── global-slideover.blade.php │ │ │ └── footer.blade.php │ │ └── checkout │ │ │ ├── footer.blade.php │ │ │ └── header.blade.php │ ├── widget │ │ ├── link.blade.php │ │ ├── productlist.blade.php │ │ └── recently-viewed.blade.php │ ├── listing │ │ └── partials │ │ │ ├── filter │ │ │ ├── selected │ │ │ │ ├── swatch.blade.php │ │ │ │ └── boolean.blade.php │ │ │ └── search.blade.php │ │ │ ├── toolbar │ │ │ ├── stats.blade.php │ │ │ ├── pages.blade.php │ │ │ └── sorting.blade.php │ │ │ ├── toolbar.blade.php │ │ │ ├── no-products.blade.php │ │ │ └── item │ │ │ ├── super-attributes.blade.php │ │ │ ├── addtocart.blade.php │ │ │ └── super-attributes │ │ │ ├── drop-down.blade.php │ │ │ ├── text-swatch.blade.php │ │ │ └── visual-swatch.blade.php │ ├── checkout │ │ ├── pages │ │ │ ├── success.blade.php │ │ │ └── login.blade.php │ │ ├── queries │ │ │ ├── fragments │ │ │ │ ├── order.graphql │ │ │ │ └── item.graphql │ │ │ ├── setGuestEmailOnCart.graphql │ │ │ ├── setPaymentMethodOnCart.graphql │ │ │ ├── setShippingMethodsOnCart.graphql │ │ │ ├── placeOrder.graphql │ │ │ ├── setExistingShippingAddressesOnCart.graphql │ │ │ └── setExistingBillingAddressOnCart.graphql │ │ ├── steps │ │ │ └── place-order.blade.php │ │ └── partials │ │ │ └── progressbar.blade.php │ ├── product │ │ └── partials │ │ │ ├── widget.blade.php │ │ │ ├── quantity.blade.php │ │ │ ├── options.blade.php │ │ │ ├── options │ │ │ ├── field.blade.php │ │ │ ├── area.blade.php │ │ │ ├── multiple.blade.php │ │ │ ├── radio.blade.php │ │ │ ├── checkbox.blade.php │ │ │ ├── drop-down.blade.php │ │ │ └── file.blade.php │ │ │ ├── breadcrumbs.blade.php │ │ │ ├── images.blade.php │ │ │ ├── super-attributes.blade.php │ │ │ ├── opengraph.blade.php │ │ │ ├── microdata.blade.php │ │ │ ├── super-attributes │ │ │ ├── drop-down.blade.php │ │ │ ├── text-swatch.blade.php │ │ │ └── visual-swatch.blade.php │ │ │ └── gallery │ │ │ ├── popup.blade.php │ │ │ └── thumbnails │ │ │ └── show-more.blade.php │ ├── category │ │ └── partials │ │ │ └── breadcrumbs.blade.php │ ├── page │ │ └── overview.blade.php │ ├── errors │ │ └── 404.blade.php │ ├── customer │ │ └── queries │ │ │ └── customer.graphql │ └── search │ │ └── overview.blade.php ├── js │ ├── app.js │ ├── components │ │ ├── Checkout │ │ │ └── Checkout.vue │ │ ├── User │ │ │ └── User.vue │ │ ├── GlobalSlideoverInstance.vue │ │ ├── GlobalSlideover.vue │ │ ├── Notifications │ │ │ └── Notifications.vue │ │ ├── Elements │ │ │ └── Toggler.vue │ │ ├── VueTurboFrame.vue │ │ └── Recursion.vue │ ├── cookies.js │ ├── polyfills.js │ ├── fetch │ │ └── graphqlbundle.js │ ├── turbolinks.js │ ├── stores │ │ ├── useInstantsearchMiddlewares.js │ │ ├── useFetches.js │ │ └── useSearchHistory.js │ ├── polyfills │ │ └── requestIdleCallback.js │ └── jwt.js ├── payment-icons │ ├── banktransfer.svg │ ├── checkmo.svg │ ├── purchaseorder.svg │ ├── free.svg │ ├── default.svg │ └── cashondelivery.svg └── svg │ ├── x.svg │ ├── github.svg │ ├── slack.svg │ └── loading.svg ├── .github ├── CODEOWNERS ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── translations.yml │ ├── prettier.yml │ ├── duster-fix-blame.yml │ └── changelog.yml ├── .gitattributes ├── config ├── rapidez.php └── rapidez │ ├── attribute-models.php │ ├── jwt.php │ ├── healthcheck.php │ └── system.php ├── tformat.json ├── postcss.config.js ├── .prettierignore ├── src ├── Exceptions │ ├── DecryptionException.php │ └── StoreNotFoundException.php ├── Models │ ├── AttributeDecimal.php │ ├── AttributeDatetime.php │ ├── AttributeModels │ │ ├── AttributeModel.php │ │ └── ArrayBackend.php │ ├── AttributeInt.php │ ├── CustomerGroup.php │ ├── AttributeText.php │ ├── AttributeVarchar.php │ ├── SearchSynonym.php │ ├── ReportEvent.php │ ├── ProductSuperLink.php │ ├── QuoteIdMask.php │ ├── Review.php │ ├── SalesOrderAddress.php │ ├── Scopes │ │ ├── Product │ │ │ ├── SupportedScope.php │ │ │ ├── EnabledScope.php │ │ │ └── ForCurrentWebsiteScope.php │ │ ├── IsActiveScope.php │ │ └── ForCurrentStoreScope.php │ ├── OauthToken.php │ ├── CheckoutAgreement.php │ ├── CategoryProduct.php │ ├── ProductOptionPrice.php │ ├── ProductOptionTitle.php │ ├── Traits │ │ ├── HasToArrayData.php │ │ └── HasEventyGlobalScopeFilter.php │ ├── ProductOptionTypePrice.php │ ├── ProductOptionTypeTitle.php │ ├── ProductTierPrice.php │ ├── ProductImageValue.php │ ├── Page.php │ ├── SalesOrderItem.php │ ├── Rewrite.php │ ├── AttributeOption.php │ ├── QuoteItem.php │ ├── Widget.php │ ├── SearchQuery.php │ ├── ReviewSummary.php │ ├── OptionValue.php │ ├── Block.php │ ├── SalesOrderPayment.php │ ├── ProductImage.php │ └── SuperAttribute.php ├── ViewComponents │ └── PlaceholderComponent.php ├── ContentVariables │ ├── Store.php │ └── Media.php ├── Events │ ├── IndexAfterEvent.php │ ├── IndexBeforeEvent.php │ └── ProductViewEvent.php ├── Widgets │ ├── ViewOnly.php │ ├── Block.php │ ├── ProductList.php │ ├── PageLink.php │ └── ProductAndCategoryLink.php ├── Http │ ├── Middleware │ │ ├── CheckStoreCode.php │ │ ├── Uncacheable.php │ │ ├── VerifyAdminToken.php │ │ ├── DetermineAndSetShop.php │ │ ├── AuthenticateHealthCheck.php │ │ └── ConfigForTesting.php │ └── Controllers │ │ ├── PageController.php │ │ ├── Fallback │ │ ├── LegacyFallbackController.php │ │ ├── CmsPageController.php │ │ └── UrlRewriteController.php │ │ ├── HealthcheckController.php │ │ ├── OrderController.php │ │ ├── CategoryController.php │ │ ├── CheckoutSuccessController.php │ │ ├── CheckoutController.php │ │ ├── GetSignedCheckoutController.php │ │ └── SignedCheckoutController.php ├── Casts │ ├── DecodeHtmlEntities.php │ ├── CommaSeparatedToArray.php │ ├── CommaSeparatedToIntegerArray.php │ └── Multiselect.php ├── Listeners │ ├── ReportProductView.php │ ├── UpdateLatestIndexDate.php │ └── Healthcheck │ │ ├── Base.php │ │ └── ModelsHealthcheck.php ├── Commands │ └── ValidateCommand.php └── Facades │ └── Rapidez.php ├── tests ├── playwright │ ├── general.spec.js-snapshots │ │ ├── cookie-1-chromium-linux.png │ │ ├── cookie-1-firefox-linux.png │ │ ├── cookie-1-webkit-linux.png │ │ ├── cookie-1-Mobile-Chrome-linux.png │ │ └── cookie-1-Mobile-Safari-linux.png │ ├── homepage.spec.js-snapshots │ │ ├── homepage-1-chromium-linux.png │ │ ├── homepage-1-firefox-linux.png │ │ ├── homepage-1-webkit-linux.png │ │ ├── homepage-1-Mobile-Chrome-linux.png │ │ └── homepage-1-Mobile-Safari-linux.png │ ├── search.spec.js-snapshots │ │ ├── autocomplete-1-chromium-linux.png │ │ ├── autocomplete-1-firefox-linux.png │ │ ├── autocomplete-1-webkit-linux.png │ │ ├── search-page-1-chromium-linux.png │ │ ├── search-page-1-firefox-linux.png │ │ ├── search-page-1-webkit-linux.png │ │ ├── autocomplete-1-Mobile-Chrome-linux.png │ │ ├── autocomplete-1-Mobile-Safari-linux.png │ │ ├── search-page-1-Mobile-Chrome-linux.png │ │ └── search-page-1-Mobile-Safari-linux.png │ ├── cart.spec.js-snapshots │ │ ├── add-product-simple-1-chromium-linux.png │ │ ├── add-product-simple-1-firefox-linux.png │ │ ├── add-product-simple-1-webkit-linux.png │ │ ├── add-product-simple-1-Mobile-Chrome-linux.png │ │ └── add-product-simple-1-Mobile-Safari-linux.png │ ├── category.spec.js-snapshots │ │ ├── category-filter-1-chromium-linux.png │ │ ├── category-filter-1-firefox-linux.png │ │ ├── category-filter-1-webkit-linux.png │ │ ├── category-filter-1-Mobile-Chrome-linux.png │ │ ├── category-filter-1-Mobile-Safari-linux.png │ │ ├── category-pagination-1-chromium-linux.png │ │ ├── category-pagination-1-firefox-linux.png │ │ ├── category-pagination-1-webkit-linux.png │ │ ├── category-pagination-1-Mobile-Chrome-linux.png │ │ ├── category-pagination-1-Mobile-Safari-linux.png │ │ ├── category-with-simple-products-1-chromium-linux.png │ │ ├── category-with-simple-products-1-firefox-linux.png │ │ ├── category-with-simple-products-1-webkit-linux.png │ │ ├── category-with-configurable-products-1-chromium-linux.png │ │ ├── category-with-configurable-products-1-firefox-linux.png │ │ ├── category-with-configurable-products-1-webkit-linux.png │ │ ├── category-with-simple-products-1-Mobile-Chrome-linux.png │ │ ├── category-with-simple-products-1-Mobile-Safari-linux.png │ │ ├── category-with-configurable-products-1-Mobile-Chrome-linux.png │ │ └── category-with-configurable-products-1-Mobile-Safari-linux.png │ ├── checkout.spec.js-snapshots │ │ ├── default---as-guest-1-webkit-linux.png │ │ ├── default---as-guest-2-webkit-linux.png │ │ ├── default---as-guest-3-webkit-linux.png │ │ ├── default---as-user-1-firefox-linux.png │ │ ├── default---as-user-1-webkit-linux.png │ │ ├── default---as-user-2-webkit-linux.png │ │ ├── default---as-user-3-firefox-linux.png │ │ ├── default---as-user-3-webkit-linux.png │ │ ├── onestep---as-guest-1-webkit-linux.png │ │ ├── onestep---as-user-1-webkit-linux.png │ │ ├── onestep---as-user-2-webkit-linux.png │ │ ├── default---as-guest-1-chromium-linux.png │ │ ├── default---as-guest-1-firefox-linux.png │ │ ├── default---as-guest-2-chromium-linux.png │ │ ├── default---as-guest-2-firefox-linux.png │ │ ├── default---as-guest-3-chromium-linux.png │ │ ├── default---as-guest-3-firefox-linux.png │ │ ├── default---as-guest-4-chromium-linux.png │ │ ├── default---as-guest-4-firefox-linux.png │ │ ├── default---as-guest-4-webkit-linux.png │ │ ├── default---as-user-1-chromium-linux.png │ │ ├── default---as-user-2-chromium-linux.png │ │ ├── default---as-user-2-firefox-linux.png │ │ ├── default---as-user-3-chromium-linux.png │ │ ├── onestep---as-guest-1-chromium-linux.png │ │ ├── onestep---as-guest-1-firefox-linux.png │ │ ├── onestep---as-guest-2-chromium-linux.png │ │ ├── onestep---as-guest-2-firefox-linux.png │ │ ├── onestep---as-guest-2-webkit-linux.png │ │ ├── onestep---as-guest-3-chromium-linux.png │ │ ├── onestep---as-guest-3-firefox-linux.png │ │ ├── onestep---as-guest-3-webkit-linux.png │ │ ├── onestep---as-user-1-chromium-linux.png │ │ ├── onestep---as-user-1-firefox-linux.png │ │ ├── onestep---as-user-2-chromium-linux.png │ │ ├── onestep---as-user-2-firefox-linux.png │ │ ├── default---as-guest-1-Mobile-Chrome-linux.png │ │ ├── default---as-guest-1-Mobile-Safari-linux.png │ │ ├── default---as-guest-2-Mobile-Chrome-linux.png │ │ ├── default---as-guest-2-Mobile-Safari-linux.png │ │ ├── default---as-guest-3-Mobile-Chrome-linux.png │ │ ├── default---as-guest-3-Mobile-Safari-linux.png │ │ ├── default---as-guest-4-Mobile-Chrome-linux.png │ │ ├── default---as-guest-4-Mobile-Safari-linux.png │ │ ├── default---as-user-1-Mobile-Chrome-linux.png │ │ ├── default---as-user-1-Mobile-Safari-linux.png │ │ ├── default---as-user-2-Mobile-Chrome-linux.png │ │ ├── default---as-user-2-Mobile-Safari-linux.png │ │ ├── default---as-user-3-Mobile-Chrome-linux.png │ │ ├── default---as-user-3-Mobile-Safari-linux.png │ │ ├── onestep---as-guest-1-Mobile-Chrome-linux.png │ │ ├── onestep---as-guest-1-Mobile-Safari-linux.png │ │ ├── onestep---as-guest-2-Mobile-Chrome-linux.png │ │ ├── onestep---as-guest-2-Mobile-Safari-linux.png │ │ ├── onestep---as-guest-3-Mobile-Chrome-linux.png │ │ ├── onestep---as-guest-3-Mobile-Safari-linux.png │ │ ├── onestep---as-user-1-Mobile-Chrome-linux.png │ │ ├── onestep---as-user-1-Mobile-Safari-linux.png │ │ ├── onestep---as-user-2-Mobile-Chrome-linux.png │ │ └── onestep---as-user-2-Mobile-Safari-linux.png │ ├── product.spec.js-snapshots │ │ ├── product-grouped-1-chromium-linux.png │ │ ├── product-grouped-1-firefox-linux.png │ │ ├── product-grouped-1-webkit-linux.png │ │ ├── product-simple-1-chromium-linux.png │ │ ├── product-simple-1-firefox-linux.png │ │ ├── product-simple-1-webkit-linux.png │ │ ├── product-configurable-1-chromium-linux.png │ │ ├── product-configurable-1-firefox-linux.png │ │ ├── product-configurable-1-webkit-linux.png │ │ ├── product-grouped-1-Mobile-Chrome-linux.png │ │ ├── product-grouped-1-Mobile-Safari-linux.png │ │ ├── product-simple-1-Mobile-Chrome-linux.png │ │ ├── product-simple-1-Mobile-Safari-linux.png │ │ ├── product-special-price-1-chromium-linux.png │ │ ├── product-special-price-1-firefox-linux.png │ │ ├── product-special-price-1-webkit-linux.png │ │ ├── product-configurable-1-Mobile-Chrome-linux.png │ │ ├── product-configurable-1-Mobile-Safari-linux.png │ │ ├── product-special-price-1-Mobile-Chrome-linux.png │ │ └── product-special-price-1-Mobile-Safari-linux.png │ ├── pages │ │ ├── AccountPage.js │ │ ├── CartPage.js │ │ └── ProductPage.js │ ├── homepage.spec.js │ ├── .env.testing │ ├── search.spec.js │ ├── product.spec.js │ └── general.spec.js └── Feature │ └── ConfigTest.php ├── phpstan.neon ├── .gitignore ├── README.md ├── .prettierrc.js ├── .php-cs-fixer.dist.php ├── vite.config.js ├── routes └── magento-redirects.php └── .editorconfig /resources/views/cart/queries/cart.graphql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @royduin @indykoning 2 | -------------------------------------------------------------------------------- /resources/js/app.js: -------------------------------------------------------------------------------- 1 | import './package.js' 2 | -------------------------------------------------------------------------------- /resources/js/components/Checkout/Checkout.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | tests/playwright/**/*.png filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /config/rapidez.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tformat.json: -------------------------------------------------------------------------------- 1 | { 2 | "preset": "tighten", 3 | "disabled": ["SpaceAfterBladeDirectives"] 4 | } 5 | -------------------------------------------------------------------------------- /resources/views/layouts/config.blade.php: -------------------------------------------------------------------------------- 1 | window.config = { ...window.config ?? {}, ...@json($config) }; 2 | -------------------------------------------------------------------------------- /resources/views/widget/link.blade.php: -------------------------------------------------------------------------------- 1 | {{ $anchorText }} 2 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /resources/views/cart/queries/partials/customizable-options.graphql: -------------------------------------------------------------------------------- 1 | customizable_options { 2 | label 3 | values { 4 | label 5 | value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /resources/js/cookies.js: -------------------------------------------------------------------------------- 1 | import VueCookies from 'vue-cookies' 2 | 3 | document.addEventListener('vue:loaded', function (event) { 4 | event.detail.vue.use(VueCookies) 5 | }) 6 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /public 2 | /vendor 3 | .github 4 | .git 5 | **/*.php 6 | !**/*.blade.php 7 | /resources/views/*.graphql 8 | /resources/views/**/*.graphql 9 | CHANGELOG.md 10 | -------------------------------------------------------------------------------- /resources/js/polyfills.js: -------------------------------------------------------------------------------- 1 | import './polyfills/emit' 2 | 3 | if (!window.requestIdleCallback || !window.cancelIdleCallback) { 4 | import('./polyfills/requestIdleCallback') 5 | } 6 | -------------------------------------------------------------------------------- /resources/views/listing/partials/filter/selected/swatch.blade.php: -------------------------------------------------------------------------------- 1 | 2 | @{{ refinement.swatch?.label ?? refinement.label }} 3 | 4 | -------------------------------------------------------------------------------- /config/rapidez/attribute-models.php: -------------------------------------------------------------------------------- 1 | Rapidez\Core\Models\AttributeModels\ArrayBackend::class, 5 | ]; 6 | -------------------------------------------------------------------------------- /resources/views/layouts/partials/footer/copyright.blade.php: -------------------------------------------------------------------------------- 1 |
2 | © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.') 3 |
4 | -------------------------------------------------------------------------------- /src/Exceptions/DecryptionException.php: -------------------------------------------------------------------------------- 1 | 'float']; 8 | } 9 | -------------------------------------------------------------------------------- /resources/js/fetch/graphqlbundle.js: -------------------------------------------------------------------------------- 1 | import { print } from 'graphql' 2 | import { gql } from 'graphql-tag' 3 | import combineQuery from 'graphql-combine-query' 4 | 5 | export { print, combineQuery, gql } 6 | -------------------------------------------------------------------------------- /resources/views/widget/productlist.blade.php: -------------------------------------------------------------------------------- 1 |@lang('Compatible file extensions to upload'): {{ $option->file_extension }}
17 | @endif 18 | @if ($option->image_size_x) 19 |@lang('Maximum image width'): {{ $option->image_size_x }}
20 | @endif 21 | @if ($option->image_size_y) 22 |@lang('Maximum image height'): {{ $option->image_size_y }}
23 | @endif 24 | @else 25 | @php(Log::error('File upload customizable option is being used, for now you will need to install rapidez/magento2-compadre')) 26 | @endif 27 | -------------------------------------------------------------------------------- /src/Http/Controllers/SignedCheckoutController.php: -------------------------------------------------------------------------------- 1 | hasValidSignature() || ! $cache->has('checkout-' . $request->get('key'))) { 15 | return redirect(config('rapidez.magento_url'), 301); 16 | } 17 | 18 | $data = $cache->get('checkout-' . $request->get('key')); 19 | $cache->forget('checkout-' . $request->get('key')); 20 | 21 | $response = redirect()->to('checkout', 301); 22 | 23 | if (! Quote::whereQuoteIdOrCustomerToken($data['mask'] ?? $data['token'])->exists()) { 24 | return redirect(config('rapidez.magento_url'), 301); 25 | } 26 | 27 | $response->withCookie('mask', $data['mask'] ?? null, 525949, null, null, null, false); 28 | $response->withCookie('token', $data['token'] ?? null, 525949, null, null, null, false); 29 | 30 | return $response; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /resources/views/checkout/partials/progressbar.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 22 | -------------------------------------------------------------------------------- /tests/playwright/product.spec.js: -------------------------------------------------------------------------------- 1 | import { test, expect } from '@playwright/test' 2 | import { BasePage } from './pages/BasePage' 3 | 4 | test('product simple', BasePage.tags, async ({ page }) => { 5 | await page.goto(process.env.PRODUCT_URL_SIMPLE) 6 | await new BasePage(page).screenshot('fullpage-footer') 7 | }) 8 | 9 | test('product configurable', BasePage.tags, async ({ page }) => { 10 | await page.goto(process.env.PRODUCT_URL_CONFIGURABLE) 11 | await new BasePage(page).screenshot('fullpage-footer') 12 | }) 13 | 14 | test('product grouped', BasePage.tags, async ({ page }) => { 15 | await page.goto(process.env.PRODUCT_URL_GROUPED) 16 | await new BasePage(page).screenshot('fullpage-footer') 17 | }) 18 | 19 | test('product special price', BasePage.tags, async ({ page }) => { 20 | await page.goto(process.env.PRODUCT_URL_SPECIAL_PRICE) 21 | await new BasePage(page).screenshot('fullpage-footer') 22 | }) 23 | 24 | test('wcag', BasePage.tags, async ({ page }, testInfo) => { 25 | await page.goto(process.env.PRODUCT_URL_SIMPLE) 26 | await new BasePage(page).wcag(testInfo) 27 | }) 28 | 29 | test('lighthouse', BasePage.tags, async ({ page }) => { 30 | await new BasePage(page).lighthouse(process.env.PRODUCT_URL_SIMPLE) 31 | }) 32 | -------------------------------------------------------------------------------- /tests/playwright/general.spec.js: -------------------------------------------------------------------------------- 1 | import { test, expect } from '@playwright/test' 2 | import { BasePage } from './pages/BasePage' 3 | 4 | test('cookie', BasePage.tags, async ({ page }) => { 5 | const acceptCookiesButton = page.getByTestId('accept-cookies') 6 | 7 | await page.goto('/?show-cookie-notice') 8 | await new BasePage(page).screenshot() 9 | await acceptCookiesButton.click() 10 | await expect(acceptCookiesButton).not.toBeVisible() 11 | 12 | const cookieNotice = await page.evaluate(() => { 13 | return window.localStorage.getItem('cookie-notice') 14 | }) 15 | 16 | await expect(cookieNotice).not.toBeNull() 17 | }) 18 | 19 | test('newsletter', BasePage.tags, async ({ page }) => { 20 | const email = `wayne+${Date.now()}@enterprises.com` 21 | 22 | await page.goto('/') 23 | await new BasePage(page).scrolldown() 24 | 25 | await page.getByTestId('newsletter-email').fill(email) 26 | await page.getByTestId('newsletter-submit').click() 27 | await expect(page.getByTestId('newsletter-success')).toBeVisible() 28 | 29 | await page.getByTestId('newsletter-email').fill(email) 30 | await page.getByTestId('newsletter-submit').click() 31 | await expect(page.getByTestId('newsletter-error')).toBeVisible() 32 | }) 33 | -------------------------------------------------------------------------------- /resources/views/layouts/partials/header/autocomplete/categories.blade.php: -------------------------------------------------------------------------------- 1 |