Files
portal/app/tests/Frontend/JivoWidget.spec.ts
T
Дмитрий a2e73a3d4d
Accessibility (Pa11y live) / a11y (push) Has been cancelled
SAST — Semgrep / Semgrep SAST scan (push) Has been cancelled
feat(support): виджет онлайн-чата JivoSite (спит без ключа)
- JivoWidget.vue: подгружает скрипт Jivo при заданном VITE_JIVO_WIDGET_ID
  (по образцу SmartCaptchaWidget); ключ пуст → ничего не грузит, виджет спит.
- Смонтирован в AppLayout (клиентский портал). +VITE_JIVO_WIDGET_ID в vite-env.d.ts.
- TDD: JivoWidget.spec (грузит при ключе / спит без) GREEN; AppLayout.spec 16/16; eslint 0.
- Активируется вставкой VITE_JIVO_WIDGET_ID (твой ID канала Jivo). На прод не выкачено.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 19:19:58 +03:00

28 lines
1.0 KiB
TypeScript

import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
import { mount } from '@vue/test-utils';
import JivoWidget from '../../resources/js/components/support/JivoWidget.vue';
beforeEach(() => {
document.querySelectorAll('#jivosite-widget-js').forEach((n) => n.remove());
});
afterEach(() => {
vi.unstubAllEnvs();
});
describe('JivoWidget', () => {
it('подгружает скрипт Jivo, когда задан VITE_JIVO_WIDGET_ID', () => {
vi.stubEnv('VITE_JIVO_WIDGET_ID', 'abc123');
mount(JivoWidget);
const script = document.getElementById('jivosite-widget-js') as HTMLScriptElement | null;
expect(script).not.toBeNull();
expect(script?.src).toContain('code.jivosite.com/widget/abc123');
});
it('ничего не грузит, когда ключ пуст (виджет спит)', () => {
vi.stubEnv('VITE_JIVO_WIDGET_ID', '');
mount(JivoWidget);
expect(document.getElementById('jivosite-widget-js')).toBeNull();
});
});