Conduzir testes A/B

Use um worklet de armazenamento compartilhado para executar testes A/B.

A API Shared Storage é um modelo Proposta de sandbox para uso geral, armazenamento entre sites, compatível com muitas possíveis casos de uso. Um exemplo disso é o teste A/B, que está disponível para teste no Chrome 104.0.5086.0 e mais recentes.

Você pode atribuir um usuário a um grupo experimental e, em seguida, armazenar esse grupo em "Compartilhados" Armazenamento a ser acessado em um ambiente entre sites.

Experimente o teste A/B

Para fazer testes A/B com o armazenamento compartilhado, confirme se você está usando o Chrome 104.0.5086.0 ou uma versão mais recente. Ative todas as APIs de privacidade de anúncios em chrome://settings/adPrivacy.

Também é possível ativar o armazenamento compartilhado com a sinalização --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames na linha de comando.

Teste exemplos de código

Para ver se um experimento teve o efeito desejado, você pode fazer testes A/B em vários sites. Como anunciante ou produtor de conteúdo, você pode renderizar conteúdos ou anúncios diferentes com base no grupo ao qual o usuário está atribuído. A atribuição do grupo é salva no armazenamento compartilhado, mas não pode ser exfiltrada.

Neste exemplo:

  • ab-testing.js precisa ser incorporado em um frame, que mapeia um controle e dois conteúdos de experimento. O script chama a worklet de armazenamento compartilhado do experimento.
  • ab-testing-worklet.js é a worklet de armazenamento compartilhado que retorna o grupo a que o usuário foi atribuído, determinando qual anúncio é exibido.

ab-testing.js

// Randomly assigns a user to a group 0 or 1
function getExperimentGroup() {
  return Math.round(Math.random());
}

async function injectContent() {
  // Register the Shared Storage worklet
  await window.sharedStorage.worklet.addModule('ab-testing-worklet.js');

  // Assign user to a random group (0 or 1) and store it in Shared Storage
  window.sharedStorage.set('ab-testing-group', getExperimentGroup(), {
    ignoreIfPresent: true,
  });

  // Run the URL selection operation
  const fencedFrameConfig = await window.sharedStorage.selectURL(
    'ab-testing',
    [
      { url: `https://your-server.example/content/default-content.html` },
      { url: `https://your-server.example/content/experiment-content-a.html` }
    ],
    {
      resolveToConfig: true
    }
  );

  // Render the chosen URL into a fenced frame
  document.getElementById('content-slot').config = fencedFrameConfig;
}

injectContent();

ab-testing-worklet.js

class SelectURLOperation {
  async run(urls, data) {
    // Read the user's experiment group from Shared Storage
    const experimentGroup = await sharedStorage.get('ab-testing-group');

    // Return the corresponding URL (first or second item in the array)
    return urls.indexOf(experimentGroup);
  }
}

register('ab-testing', SelectURLOperation);

Use cases

All available use cases for Select URL API can be found in this section. We'll continue to add examples as we receive feedback and discover new test cases.

Engage and share feedback

Note that the Select URL API proposal is under active discussion and development and subject to change.

We're eager to hear your thoughts on the Select URL API.

Stay Informed

  • Mailing List: Subscribe to our mailing list for the latest updates and announcements related to the Select URL and Shared Storage APIs.

Need Help?