text: <?php
  /**
   * Copyright © Magento, Inc. All rights reserved.
   * See COPYING.txt for license details.
   */
  declare(strict_types=1);
  
  use Magento\Bundle\Model\Product\Price;
  use Magento\Catalog\Api\Data\ProductInterfaceFactory;
  use Magento\Catalog\Api\ProductRepositoryInterface;
  use Magento\Catalog\Model\Product\Attribute\Source\Status;
  use Magento\Catalog\Model\Product\Type;
  use Magento\Catalog\Model\Product\Type\AbstractType;
  use Magento\Catalog\Model\Product\Visibility;
  use Magento\Store\Api\WebsiteRepositoryInterface;
  use Magento\TestFramework\Bundle\Model\PrepareBundleLinks;
  use Magento\TestFramework\Helper\Bootstrap;
  use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
  
  Resolver::getInstance()->requireDataFixture('Magento/Bundle/_files/multiple_products.php');
  
  $objectManager = Bootstrap::getObjectManager();
  /** @var PrepareBundleLinks $prepareBundleLinks */
  $prepareBundleLinks = $objectManager->get(PrepareBundleLinks::class);
  /** @var ProductRepositoryInterface $productRepository */
  $productRepository = $objectManager->create(ProductRepositoryInterface::class);
  /** @var ProductInterfaceFactory $productFactory */
  $productFactory = $objectManager->get(ProductInterfaceFactory::class);
  /** @var WebsiteRepositoryInterface $websiteRepository */
  $websiteRepository = $objectManager->get(WebsiteRepositoryInterface::class);
  $defaultWebsiteId = $websiteRepository->get('base')->getId();
  $bundleProduct = $productFactory->create();
  $bundleProduct->setTypeId(Type::TYPE_BUNDLE)
      ->setAttributeSetId($bundleProduct->getDefaultAttributeSetId())
      ->setWebsiteIds([$defaultWebsiteId])
      ->setName('Bundle Product')
      ->setSku('fixed_bundle_product_with_special_price')
      ->setVisibility(Visibility::VISIBILITY_BOTH)
      ->setStatus(Status::STATUS_ENABLED)
      ->setStockData(
          [
              'use_config_manage_stock' => 1,
              'qty' => 100,
              'is_qty_decimal' => 0,
              'is_in_stock' => 1,
          ]
      )
      ->setPriceView(1)
      ->setSkuType(1)
      ->setWeightType(1)
      ->setPriceType(Price::PRICE_TYPE_FIXED)
      ->setPrice(50.0)
      ->setSpecialPrice(80)
      ->setShipmentType(AbstractType::SHIPMENT_TOGETHER);
  
  $bundleOptionsData = [
      [
          'title' => 'Option 1',
          'default_title' => 'Option 1',
          'type' => 'radio',
          'required' => 1,
          'delete' => '',
      ],
  ];
  $bundleSelectionsData = [
      [
          'sku' => 'simple1',
          'selection_qty' => 1,
          'selection_price_value' => 10,
          'selection_price_type' => 0,
          'selection_can_change_qty' => 1,
      ],
      [
          'sku' => 'simple2',
          'selection_qty' => 1,
          'selection_price_value' => 25,
          'selection_price_type' => 1,
          'selection_can_change_qty' => 1,
      ],
      [
          'sku' => 'simple3',
          'selection_qty' => 1,
          'selection_price_value' => 25,
          'selection_price_type' => 0,
          'selection_can_change_qty' => 1,
      ],
  ];
  $bundleProduct = $prepareBundleLinks->execute($bundleProduct, $bundleOptionsData, [$bundleSelectionsData]);
  $productRepository->save($bundleProduct);
  