LiaDesenvolvedores

Pacotes

Construa seu app em um navegador de desktop com mockLia(), um Lia falso que responde a todas as chamadas com um jogador de teste. Altere suas respostas, envie eventos e depure cada mensagem.

Fora do app Lia há's não tem ponte de frame, então toda chamada falha com not_in_lia. mockLia() coloca um Lia falso no seu lugar: ele responde a todas as chamadas da mesma forma que Lia faria, com um jogador de teste no modo de teste, então seu app todo roda em um navegador de desktop ou em testes.

#Ative-o

Chame antes da primeira chamada SDK, e apenas fora de Lia:

import { init, isLia, mockLia } from '@lia-labs/sdk';

if (!isLia()) mockLia();

const me = await init(); // { player: { name: 'tester' }, mode: 'test', ... }

Com um pacote de framework, ele'mesmo import, daquele pacote. Mantenha-o fora das construções de produção com seu bundler'bandeira de desenvolvedor se você quiser (if (import.meta.env.DEV && !isLia())).

#O que ele responde

ChamadaAs respostas do mock
initUm jogador de teste (tester) modo de teste, inglês, claro, uma folha, notificações disponíveis
payUma cobrança paga, ch_mock0001 e acima
showAd e seus atalhosUm vídeo assistido (ad_mock), ou uma intersticial exibida
confirm, showPopupSim, e o primeiro botão
requestNotifications, inviteFriendPermitido, convidado
submitScore, leaderboardMantém seu melhor score e o classifica em primeiro lugar
ArmazenamentoMantido em memória para a página's vida.
biometricFace disponível ID, autenticado
Tudo maisO que Lia responde quando funciona

#Mude suas respostas

Passar init para mudar quem e como, e onMethod para decidir qualquer resposta você mesmo. Retorne um valor para responder, lance { code } para falhar, ou chame next() para o mock'seu próprio resposta:

mockLia({
  init: { language: 'ar', rtl: true, theme: 'dark', startParam: 'room-k3x9' },
  latency: 300, // ms before each answer, to see your loading states
  onMethod: (call, next) => {
    if (call.method === 'pay' && call.params.productId === 'gold-pack') throw { code: 'cancelled' };
    if (call.method === 'showAd') return { watched: false, shown: false, reason: 'no_ad' };
    return next();
  },
});

#Enviar eventos

O mock pode enviar qualquer um dos Lia'eventos, para tentar como seu app reage:

const mock = mockLia();
mock.event('theme', { colorScheme: 'dark', theme: { bg_color: '#09090B', text_color: '#F5F5F7' } });
mock.event('soundChanged', { on: false });
mock.event('startParam', { startParam: 'room-a81c' });
mock.event('mainButtonClicked');
mock.event('pause');

mock.calls lista todas as chamadas que sua página fez, e mock.restore() remove o mock.

#Em testes

O mesmo mock torna os testes simples (aqui com Vitest e jsdom):

import { afterEach, expect, it } from 'vitest';
import { init, mainButton, mockLia, resetForTests, resetStateForTests } from '@lia-labs/sdk';

afterEach(() => {
  resetForTests();
  resetStateForTests();
});

it('shows Buy once the player is in', async () => {
  const mock = mockLia();
  await init();
  mainButton.setParams({ text: 'Buy', isVisible: true });
  await Promise.resolve();
  expect(mock.calls.at(-1)).toMatchObject({ method: 'bottomButton', params: { text: 'Buy', visible: true } });
  mock.restore();
});

#Ver todas as mensagens

setDebug(true) registra todas as chamadas, respostas e eventos no console, dentro do Lia também:

import { setDebug } from '@lia-labs/sdk';
setDebug(true);
// [lia] call pay { productId: 'extra-lives' }
// [lia] event pause undefined
// [lia] answer pay { id: 7, ok: true, result: { chargeId: 'ch_…', productId: 'extra-lives' } }

Passe um segundo argumento para enviá-los ao seu próprio logger, o que ajuda dentro do Lia onde há's não tem inspetor web: setDebug(true, { log: send, warn: send, error: send }).

#Seu servidor

O mock'sessão (lias_mock) não'um Lia assinado, então /session/verify diz que não é'para válido. Dê um caminho de desenvolvimento ao seu servidor, ou tente fluxos de servidor dentro de Lia como um testador. Veja Testando seu app.

Traduzido automaticamente. O inglês é a fonte de verdade. Leia em inglês

Digite para pesquisar todas as páginas, métodos e endpoints.