import { test, expect } from '@playwright/test';

test.describe('General - Dashboard - Telephony', () => {
  test.beforeEach(async ({ page }) => {
    await page.goto('/telephony', { waitUntil: 'networkidle' });
  });

  test('Title', async ({ page }) => {
    const title = await page.title();
    expect(title).toBe('Difuse - Dashboard - Telephony');
  });

  test('Top Cards', async ({ page }) => {
    const sipExtensions = await page.getByRole('heading', { name: 'SIP Extensions' });
    const sipTrunks = await page.getByRole('heading', { name: 'SIP Trunks' });
    const currentChannels = await page.getByRole('heading', { name: 'Current Channels' });
    const completedCalls = await page.getByRole('heading', { name: 'Completed Calls' });

    expect(sipExtensions && sipTrunks && currentChannels && completedCalls).toBeTruthy();
  });

  test('Endpoint Table', async ({ page }) => {
    expect(await page.getByText('Page Size')).toBeTruthy();
  });

  test('PBX Information', async ({ page }) => {
    const yearRegex = /\b\d{4}\b/;

    const coreReloadText = await page.textContent('td:has-text("Core Last Reload") + td');
    expect(yearRegex.test(coreReloadText)).toBeTruthy();

    const asteriskVersionText = await page.textContent('td:has-text("Asterisk Version") + td');
    const versionRegex = /^\d+\.\d+\.\d+$/;
    expect(versionRegex.test(asteriskVersionText.replaceAll(/\s/g, ''))).toBeTruthy();

    const coreStartupTimeText = await page.textContent('#core-startup-time');
    expect(yearRegex.test(coreStartupTimeText)).toBeTruthy();
  });
});