From 0f4e495cb99615d0fede8452e6c34ff43b6f98df Mon Sep 17 00:00:00 2001
From: v-baambati <132879294+v-baambati@users.noreply.github.com>
Date: Thu, 24 Oct 2024 11:43:08 +0530
Subject: [PATCH 01/24] Added basic test cases to donut chart
---
.../src/donut-chart/donut-chart.spec.ts | 85 +++++++++++++++++++
1 file changed, 85 insertions(+)
create mode 100644 packages/web-components/src/donut-chart/donut-chart.spec.ts
diff --git a/packages/web-components/src/donut-chart/donut-chart.spec.ts b/packages/web-components/src/donut-chart/donut-chart.spec.ts
new file mode 100644
index 0000000000000..f132991685dc8
--- /dev/null
+++ b/packages/web-components/src/donut-chart/donut-chart.spec.ts
@@ -0,0 +1,85 @@
+import { test } from '@playwright/test';
+import { expect, fixtureURL } from '../helpers.tests.js';
+import { IChartDataPoint, IChartProps } from './donut-chart.options.js';
+
+
+
+const points: IChartDataPoint[] = [
+ {
+ legend: 'first',
+ data: 20000,
+ color: '#0099BC',
+ },
+ {
+ legend: 'second',
+ data: 39000,
+ color: '#77004D',
+ },
+];
+
+const data: IChartProps = {
+ chartTitle: 'Donut chart basic example',
+ chartData: points,
+};
+
+
+test.describe('Donut-chart - Basic', () => {
+ test.beforeEach(async ({ page }) => {
+ await page.goto(fixtureURL('components-donutchart--basic'));
+
+ await page.waitForFunction(() => customElements.whenDefined('fluent-donut-chart'));
+ });
+
+ test('Should render chart properly', async ({ page }) => {
+ const element = page.locator('fluent-donut-chart');
+ //chart attributes
+ await expect(element.getByRole('button', { name: 'First' })).toBeVisible();
+ await expect(element.getByRole('button', { name: 'Second' })).toBeVisible();
+ await expect(page.getByText('35,000')).toBeVisible();
+ });
+
+ test('Should render path with proper attributes and css', async ({ page }) => {
+ const element = page.locator('fluent-donut-chart');
+ const firstPath = element.getByLabel('first,');
+ await expect(firstPath).toHaveAttribute('fill', '#0099BC');
+ await expect(firstPath).toHaveAttribute('aria-label', 'first, 20000.');
+ await expect(firstPath).
+ toHaveAttribute('d', 'M-76.547,47.334A90,90,0,0,1,-1.055,-89.994L-1.055,-54.99A55,55,0,0,0,-46.993,28.577Z');
+ await expect(firstPath).toHaveCSS('fill', 'rgb(0, 153, 188)');
+ await expect(firstPath).toHaveCSS('--borderRadiusMedium', '4px');
+
+ const secondPath = element.getByLabel('second,');
+ await expect(secondPath).toHaveAttribute('fill', '#77004D');
+ await expect(secondPath).toHaveAttribute('aria-label', 'second, 39000.');
+ await expect(secondPath).
+ toHaveAttribute('d', 'M1.055,-89.994A90,90,0,1,1,-75.417,49.115L-45.863,30.358A55,55,0,1,0,1.055,-54.99Z');
+ });
+
+ test('Should render legends data properly', async ({ page }) => {
+ const element = page.locator('fluent-donut-chart');
+ const legends = element.getByRole('button');
+ await expect(legends).toHaveCount(2);
+ const firstLegend = element.getByRole('button', { name: 'First' });
+ const secondLegend = element.getByRole('button', { name: 'Second' });
+ await expect(firstLegend).toBeVisible();
+ await expect(firstLegend).toHaveText('first');
+ await expect(firstLegend).toHaveCSS('--borderRadiusMedium', '4px');
+ await expect(secondLegend).toBeVisible();
+ await expect(secondLegend).toHaveText('second');
+ await expect(secondLegend).toHaveCSS('--borderRadiusMedium', '4px');
+ });
+
+ test('Should update path css values with mouse click event on legend', async ({ page }) => {
+ const element = page.locator('fluent-donut-chart');
+ const firstPath = element.getByLabel('first,');
+ const secondPath = element.getByLabel('second,');
+ const firstLegend = element.getByRole('button', { name: 'First' });
+ //mouse events
+ await firstLegend.click();
+ await expect(firstPath).toHaveCSS('opacity', '1');
+ await expect(secondPath).toHaveCSS('opacity', '0.1');
+ await firstLegend.click();
+ await expect(firstPath).toHaveCSS('opacity', '1');
+ await expect(secondPath).toHaveCSS('opacity', '1');
+ });
+})
From 8ef1a6b39d8e3c53ec2de878773b42cd18fd73f1 Mon Sep 17 00:00:00 2001
From: v-baambati <132879294+v-baambati@users.noreply.github.com>
Date: Thu, 24 Oct 2024 12:13:24 +0530
Subject: [PATCH 02/24] removed unused code
---
.../src/donut-chart/donut-chart.spec.ts | 23 -------------------
1 file changed, 23 deletions(-)
diff --git a/packages/web-components/src/donut-chart/donut-chart.spec.ts b/packages/web-components/src/donut-chart/donut-chart.spec.ts
index f132991685dc8..17d148d8e4f50 100644
--- a/packages/web-components/src/donut-chart/donut-chart.spec.ts
+++ b/packages/web-components/src/donut-chart/donut-chart.spec.ts
@@ -1,28 +1,5 @@
import { test } from '@playwright/test';
import { expect, fixtureURL } from '../helpers.tests.js';
-import { IChartDataPoint, IChartProps } from './donut-chart.options.js';
-
-
-
-const points: IChartDataPoint[] = [
- {
- legend: 'first',
- data: 20000,
- color: '#0099BC',
- },
- {
- legend: 'second',
- data: 39000,
- color: '#77004D',
- },
-];
-
-const data: IChartProps = {
- chartTitle: 'Donut chart basic example',
- chartData: points,
-};
-
-
test.describe('Donut-chart - Basic', () => {
test.beforeEach(async ({ page }) => {
await page.goto(fixtureURL('components-donutchart--basic'));
From db2a991e216ede847b794a790face8d4ee5f9783 Mon Sep 17 00:00:00 2001
From: v-baambati <132879294+v-baambati@users.noreply.github.com>
Date: Fri, 25 Oct 2024 11:05:35 +0530
Subject: [PATCH 03/24] added basic tests to Horizontalbar chart
---
.../horizontalbarchart.spec.ts | 37 +++++++++++++++++++
1 file changed, 37 insertions(+)
create mode 100644 packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts
diff --git a/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts b/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts
new file mode 100644
index 0000000000000..f4bd76b5592eb
--- /dev/null
+++ b/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts
@@ -0,0 +1,37 @@
+
+import { test } from '@playwright/test';
+import { expect, fixtureURL } from '../helpers.tests.js';
+
+test.describe('horizontalbarchart - Basic', () => {
+ test.beforeEach(async ({ page }) => {
+ await page.goto(fixtureURL('components-horizontalbarchart--basic'));
+ await page.waitForFunction(() => customElements.whenDefined('fluent-horizontalbarchart'));
+ });
+
+ test('Should render chart properly', async ({ page }) => {
+ const element = page.locator('fluent-horizontalbarchart');
+ await expect(element.getByRole('button', { name: 'Debit card numbers (EU and USA)' })).toBeVisible();
+ await expect(element.getByRole('button', { name: 'Passport numbers (USA)' })).toBeVisible();
+ await expect(element.getByRole('button', { name: 'Social security numbers' })).toBeVisible();
+ await expect(element.getByRole('button', { name: 'Credit card Numbers' })).toBeVisible();
+ await expect(element.getByRole('button', { name: 'Phone Numbers' })).toBeVisible();
+ await expect(page.getByText('Monitored First')).toBeVisible();
+ await expect(page.getByText('Monitored Second')).toBeVisible();
+ await expect(page.getByText('Unmonitored')).toBeVisible();
+ });
+
+ test('Should render bars and bar labels properly', async ({ page }) => {
+ const element = page.locator('fluent-horizontalbarchart');
+ const bars = element.locator('.bar')
+ await expect(bars).toHaveCount(12);
+ const barLabels = element.locator('.barLabel')
+ await expect(barLabels).toHaveCount(12);
+ });
+
+ test('Should render legends data properly', async ({ page }) => {
+ const element = page.locator('fluent-horizontalbarchart');
+ const legends = element.locator('.legend')
+ await expect(legends).toHaveCount(6);
+ });
+
+});
From b45180f0383a10da183131acad339ba03854fa17 Mon Sep 17 00:00:00 2001
From: v-baambati <132879294+v-baambati@users.noreply.github.com>
Date: Fri, 25 Oct 2024 14:36:41 +0530
Subject: [PATCH 04/24] added basic tests to Horizontalbar chart
---
.../src/horizontalbarchart/horizontalbarchart.spec.ts | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts b/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts
index f4bd76b5592eb..1512069255a87 100644
--- a/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts
+++ b/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts
@@ -24,14 +24,23 @@ test.describe('horizontalbarchart - Basic', () => {
const element = page.locator('fluent-horizontalbarchart');
const bars = element.locator('.bar')
await expect(bars).toHaveCount(12);
+ const firstBar = bars.first();
+ await expect(firstBar).toHaveCSS('fill', 'rgb(0, 153, 188)');
+ await expect(firstBar).toHaveCSS('opacity', '1');
+ await expect(firstBar).toHaveAttribute(`height`, '12');
const barLabels = element.locator('.barLabel')
await expect(barLabels).toHaveCount(12);
+ const firstBarLabel = barLabels.first();
+ await expect(firstBarLabel).toHaveText('272');
+ await expect(firstBarLabel).toHaveAttribute(`aria-label`, 'Total: 272');
});
test('Should render legends data properly', async ({ page }) => {
const element = page.locator('fluent-horizontalbarchart');
const legends = element.locator('.legend')
await expect(legends).toHaveCount(6);
+ const firstLegend = legends.first();
+ await expect(firstLegend.locator('div').first()).toHaveCSS('background-color', 'rgb(0, 153, 188)');
+ await expect(firstLegend).toHaveText('Debit card numbers (EU and USA)');
});
-
});
From 7ce4c9ab0c64987458eadfe28729f76f96b2ee85 Mon Sep 17 00:00:00 2001
From: v-baambati <132879294+v-baambati@users.noreply.github.com>
Date: Mon, 28 Oct 2024 09:27:37 +0530
Subject: [PATCH 05/24] added mouse events to donut chart
---
.../src/donut-chart/donut-chart.spec.ts | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/packages/web-components/src/donut-chart/donut-chart.spec.ts b/packages/web-components/src/donut-chart/donut-chart.spec.ts
index 17d148d8e4f50..e0f5c5cfa45bd 100644
--- a/packages/web-components/src/donut-chart/donut-chart.spec.ts
+++ b/packages/web-components/src/donut-chart/donut-chart.spec.ts
@@ -59,4 +59,53 @@ test.describe('Donut-chart - Basic', () => {
await expect(firstPath).toHaveCSS('opacity', '1');
await expect(secondPath).toHaveCSS('opacity', '1');
});
+
+ test('Should update path css values with mouse hover event on legend', async ({ page }) => {
+ const element = page.locator('fluent-donut-chart');
+ const firstPath = element.getByLabel('first,');
+ const secondPath = element.getByLabel('second,');
+ const firstLegend = element.getByRole('button', { name: 'First' });
+ //mouse events
+ await firstLegend.dispatchEvent('mouseover');
+ await expect(firstPath).toHaveCSS('opacity', '1');
+ await expect(secondPath).toHaveCSS('opacity', '0.1');
+ await firstLegend.dispatchEvent('mouseout');
+ await expect(firstPath).toHaveCSS('opacity', '1');
+ await expect(secondPath).toHaveCSS('opacity', '1');
+ });
+
+ test('Should show callout with mouse hover event on path', async ({ page }) => {
+ const element = page.locator('fluent-donut-chart');
+ const firstPath = element.getByLabel('first,');
+ const calloutRoot = element.locator('.calloutContentRoot')
+ await expect(calloutRoot).toHaveCount(1);
+ await expect(calloutRoot).not.toHaveCSS('opacity', '1');
+ await firstPath.dispatchEvent('mouseover');
+ await expect(calloutRoot).toHaveCSS('opacity', '1');
+ const calloutLegendText = await element.locator('.calloutLegendText');
+ await expect(calloutLegendText).toHaveText('first');
+ const calloutContentY = await element.locator('.calloutContentY');
+ await expect(calloutContentY).toHaveText('20000');
+ await firstPath.dispatchEvent('mouseout');
+ await expect(calloutRoot).not.toHaveCSS('opacity', '0');
+ });
+
+ test('Should update callout data when mouse moved from one path to another path', async ({ page }) => {
+ const element = page.locator('fluent-donut-chart');
+ const firstPath = element.getByLabel('first,');
+ const calloutRoot = element.locator('.calloutContentRoot')
+ await expect(calloutRoot).toHaveCount(1);
+ await expect(calloutRoot).not.toHaveCSS('opacity', '1');
+ await firstPath.dispatchEvent('mouseover');
+ await expect(calloutRoot).toHaveCSS('opacity', '1');
+ const calloutLegendText = await element.locator('.calloutLegendText');
+ await expect(calloutLegendText).toHaveText('first');
+ const calloutContentY = await element.locator('.calloutContentY');
+ await expect(calloutContentY).toHaveText('20000');
+ const secondPath = element.getByLabel('second,');
+ await secondPath.dispatchEvent('mouseover');
+ await expect(calloutRoot).not.toHaveCSS('opacity', '0');
+ await expect(calloutLegendText).toHaveText('second');
+ await expect(calloutContentY).toHaveText('39000');
+ });
})
From 9f79e2abd461c4a3cb10de1e2eb3321490a03590 Mon Sep 17 00:00:00 2001
From: v-baambati <132879294+v-baambati@users.noreply.github.com>
Date: Mon, 28 Oct 2024 09:30:37 +0530
Subject: [PATCH 06/24] added mouse events to donut chart
---
packages/web-components/src/donut-chart/donut-chart.spec.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/web-components/src/donut-chart/donut-chart.spec.ts b/packages/web-components/src/donut-chart/donut-chart.spec.ts
index e0f5c5cfa45bd..6760680a91edf 100644
--- a/packages/web-components/src/donut-chart/donut-chart.spec.ts
+++ b/packages/web-components/src/donut-chart/donut-chart.spec.ts
@@ -104,7 +104,7 @@ test.describe('Donut-chart - Basic', () => {
await expect(calloutContentY).toHaveText('20000');
const secondPath = element.getByLabel('second,');
await secondPath.dispatchEvent('mouseover');
- await expect(calloutRoot).not.toHaveCSS('opacity', '0');
+ await expect(calloutRoot).toHaveCSS('opacity', '1');
await expect(calloutLegendText).toHaveText('second');
await expect(calloutContentY).toHaveText('39000');
});
From a58bfacee1ad861e2e3d6a84c98789a1918c9f65 Mon Sep 17 00:00:00 2001
From: v-baambati <132879294+v-baambati@users.noreply.github.com>
Date: Mon, 28 Oct 2024 16:20:17 +0530
Subject: [PATCH 07/24] added mouse event test cases to horizontalbarchart
---
.../horizontalbarchart.spec.ts | 86 ++++++++++++++++++-
1 file changed, 85 insertions(+), 1 deletion(-)
diff --git a/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts b/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts
index 1512069255a87..3ce9548bef656 100644
--- a/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts
+++ b/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts
@@ -8,7 +8,7 @@ test.describe('horizontalbarchart - Basic', () => {
await page.waitForFunction(() => customElements.whenDefined('fluent-horizontalbarchart'));
});
- test('Should render chart properly', async ({ page }) => {
+ test('Should render horizontalbarchart properly', async ({ page }) => {
const element = page.locator('fluent-horizontalbarchart');
await expect(element.getByRole('button', { name: 'Debit card numbers (EU and USA)' })).toBeVisible();
await expect(element.getByRole('button', { name: 'Passport numbers (USA)' })).toBeVisible();
@@ -43,4 +43,88 @@ test.describe('horizontalbarchart - Basic', () => {
await expect(firstLegend.locator('div').first()).toHaveCSS('background-color', 'rgb(0, 153, 188)');
await expect(firstLegend).toHaveText('Debit card numbers (EU and USA)');
});
+
+ test('Should update bar css/opaity when mouse hover on legend', async ({ page }) => {
+ const element = page.locator('fluent-horizontalbarchart');
+ const legends = element.locator('.legend')
+ await expect(legends).toHaveCount(6);
+ const firstLegend = legends.first();
+ //mouse events
+ await legends.nth(0).dispatchEvent('mouseover');
+ const bars = element.locator('.bar')
+ await expect(bars).toHaveCount(12);
+ await expect(bars.nth(0)).toHaveCSS('opacity', '1');
+ await expect(bars.nth(1)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(2)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(3)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(4)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(5)).toHaveCSS('opacity', '1');
+ await expect(bars.nth(6)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(7)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(8)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(9)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(10)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(11)).toHaveCSS('opacity', '0.1');
+ });
+
+ test('Should update bar css/opaity when mouse moved from one legend to another legend', async ({ page }) => {
+ const element = page.locator('fluent-horizontalbarchart');
+ const legends = element.locator('.legend')
+ await expect(legends).toHaveCount(6);
+ await legends.nth(0).dispatchEvent('mouseover');
+ const bars = element.locator('.bar')
+ await expect(bars.nth(0)).toHaveCSS('opacity', '1');
+ await expect(bars.nth(1)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(2)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(3)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(4)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(5)).toHaveCSS('opacity', '1');
+ await expect(bars.nth(6)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(7)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(8)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(9)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(10)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(11)).toHaveCSS('opacity', '0.1');
+ await legends.nth(0).dispatchEvent('mouseout');
+ await legends.nth(1).dispatchEvent('mouseover');
+ await expect(bars.nth(0)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(1)).toHaveCSS('opacity', '1');
+ await expect(bars.nth(2)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(3)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(4)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(5)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(6)).toHaveCSS('opacity', '1');
+ await expect(bars.nth(7)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(8)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(9)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(10)).toHaveCSS('opacity', '0.1');
+ await expect(bars.nth(11)).toHaveCSS('opacity', '0.1');
+ });
+
+ test('Should show callout when mouse hover on bar', async ({ page }) => {
+ const element = page.locator('fluent-horizontalbarchart');
+ const bars = element.locator('.bar')
+ const tooltip = element.locator('.tooltip')
+ await expect(tooltip).toHaveCount(0);
+ await bars.nth(0).dispatchEvent('mouseover');
+ await expect(tooltip).toHaveCount(1);
+ await expect(tooltip.nth(0)).toHaveCSS('opacity', '1');
+ await expect(tooltip.nth(0).locator('div').first()).toHaveText('Debit card numbers (EU and USA) 40');
+ });
+
+ test('Should update callout data when mouse moved from one bar to another bar', async ({ page }) => {
+ const element = page.locator('fluent-horizontalbarchart');
+ const bars = element.locator('.bar')
+ const tooltip = element.locator('.tooltip')
+ await expect(tooltip).toHaveCount(0);
+ await bars.nth(0).dispatchEvent('mouseover');
+ await expect(tooltip).toHaveCount(1);
+ await expect(tooltip.nth(0)).toHaveCSS('opacity', '1');
+ await expect(tooltip.nth(0).locator('div').first()).toHaveText('Debit card numbers (EU and USA) 40');
+ await bars.nth(0).dispatchEvent('mouseout');
+ await bars.nth(1).dispatchEvent('mouseover');
+ await expect(tooltip).toHaveCount(2);
+ await expect(tooltip.nth(1)).toHaveCSS('opacity', '1');
+ await expect(tooltip.nth(1).locator('div').first()).toHaveText('Passport numbers (USA) 23');
+ });
});
From 85b67ab53bb3d2bfd13521426e933826c3ef359d Mon Sep 17 00:00:00 2001
From: v-baambati <132879294+v-baambati@users.noreply.github.com>
Date: Mon, 4 Nov 2024 11:24:47 +0530
Subject: [PATCH 08/24] added RTL tests
---
.../src/donut-chart/donut-chart.spec.ts | 34 +++++++++++++++---
...-properly-in-RTL-mode-1-chromium-win32.png | Bin 0 -> 9670 bytes
.../horizontalbarchart.spec.ts | 19 ++++++++++
...-properly-in-RTL-mode-1-chromium-win32.png | Bin 0 -> 9759 bytes
4 files changed, 49 insertions(+), 4 deletions(-)
create mode 100644 packages/web-components/src/donut-chart/donut-chart.spec.ts-snapshots/Donut-chart---RTL-Should-render-chart-properly-in-RTL-mode-1-chromium-win32.png
create mode 100644 packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts-snapshots/horizontalbarchart---RTL-Should-render-chart-properly-in-RTL-mode-1-chromium-win32.png
diff --git a/packages/web-components/src/donut-chart/donut-chart.spec.ts b/packages/web-components/src/donut-chart/donut-chart.spec.ts
index 6760680a91edf..e6408cc590d05 100644
--- a/packages/web-components/src/donut-chart/donut-chart.spec.ts
+++ b/packages/web-components/src/donut-chart/donut-chart.spec.ts
@@ -1,5 +1,9 @@
import { test } from '@playwright/test';
import { expect, fixtureURL } from '../helpers.tests.js';
+import { teamsDarkTheme, teamsLightTheme, webDarkTheme, webLightTheme } from '@fluentui/tokens';
+import { setTheme } from '../theme/set-theme.js';
+
+
test.describe('Donut-chart - Basic', () => {
test.beforeEach(async ({ page }) => {
await page.goto(fixtureURL('components-donutchart--basic'));
@@ -9,10 +13,14 @@ test.describe('Donut-chart - Basic', () => {
test('Should render chart properly', async ({ page }) => {
const element = page.locator('fluent-donut-chart');
- //chart attributes
- await expect(element.getByRole('button', { name: 'First' })).toBeVisible();
- await expect(element.getByRole('button', { name: 'Second' })).toBeVisible();
- await expect(page.getByText('35,000')).toBeVisible();
+ const legends = element.locator('.legendText');
+ await page.setContent(/* html */ `
+
zX zOpDQm5m*NG{2*cfcD|wKHu|kH@YqHHRazUbx@4}52s4gj@T;%}?XP|}JF16h) z=QKZ~>!G(X59tKzp2|=OVJFVhF Zs3_)e`STtkmOeT!h(k)_>lMDV12a7+yG|~EE9~l zWPH~07@CL{KoxS2xPMVv4DF(y5nQ_bdF|xQmR@K52&Kx3I(ubN*Ec3z6gvFNgm3n( zKAQ*O0h&?(Wi@g$IiWBBesJY?mk8$o)39ER$zL(OwdRSi`z1%52wumvyndfBK ~hPcbQFC-!O^g$LsxNN5>|A- zlcYY^VL)oYf%-N%qgM94=UUBg(yjGBRS{IeXI^bocUGk5rA}v7*Aq3E2w+18H_Mej zI`uQ5R-#7VVH$t9(kv4?^?#sIpF5S<;y(lA*%cS1j3)5k;Og*q(MP|H`cyI6Um2bT zX#<1COGipygZhDoe*1j#-&gLs6or`*fDGcUdY+3eNa-_AD_UfvMa90~*={K8q1!iN z-_^Iv;=Lljo_5;cv)P3JlkV&~DuAU}-Z-aMs0V=~5zi3=H>rze2U$9Ib=@$?a%Ie} z$tCPrapG1 u82*(tL-mHP~c0 z7VfDqC+=J9sk#WR?EU%a_d-Wcyjcc~mWz7L=?97sh-`3IzK|^Us>}IQg6`d@Q*(g@ zpvS!{?hkyL+0u~LFZ2UHXQk*=5~;}h!qDGmV@eRRP`xhzOZMeQ^@E>8+{3ZrJNd@} zhsTsI9B-PR==bpeeydR@J{S~ykz6^>WOjSwQKThD<7}l@={S?Kw0KAt{lK|}Wna^_ zfG<&Txp-&?5BqE~)#YlrmV*lCN5(`=tO6U6KbUe5e`zI}HI>_N%%A1V+VdVsSdTD# zhSbT&do3^B<0Xrp>}*aupKMIttq(PiuUu|y$US#_pGgPXIc;bnA9eU6+98M%JpB5L zOjnK<<23Bq|65B|$aaw~);L=ri8r{5o=4KC?mEFuPLk=PV9`^e(-!OFSBf3^8Y<0C zu;u0Oh@x;FcUgS(a7}+I obtRNv z+D1n7m(1S&f>Rl)`(;sj#R43~VsNNBV%g}2w?0E*;mq4_jjZ`1b(NY$t=fVhS`OjW zTTfu_;;Jo;O<2e1i^N&)dWydjBj!YEPC+K(T#Lvfq68UtXQCM6;0b%e#{ho`;;?V5 z-z%+%-~|s F(-7CgZ6?%s{tqBfpD OI5;C3x+afOPwB`hWetDqmlkWE3a9_aH82 zZ_eA_OPZz=ism8L3yE(GlkpE|me*fEzGvx3Qz8oH>{hxy)pJU6pl*PICJS42{7x0$ zOspTEI!NrCbhQoAv*b75Pb_QMI8I7 >LF=eT_->Y>btv8KQs&-1e`GebsyPou7 z{60`zXDvXWMEA(oo{yA0WheaGQ#n4Nn*s*iefE&{$1BjQTacT?|HBN&i@u+wbwfuH zRNcopJdf773v1Og9wvUL(x+pR0A)V1KyDSe20!(qm`3(RA5jp^zy-KG|Ew$ReK!w2 zHeSeZ?HW8fN@nqhVLAQ@lY(NWbh@>c8b(5CI|K>g_N;z1Tw)z+%o*sP3sJsN>H5#u6=5p=EJa=W?m%D9re&&Aq53B9_N`ELRDFJP}(K#W;* z<+6Szw;z5_J`fobFVi%{aKWV4!;Up+9)wg_5q`CdwF+BeUce5rjYOf|7YRMeUo8=8 z;98kR#l?~eeL~IrH;}v98z(N7ZVhc-Jy$_g$3*!>sT3N$9`7?s6LxgOBfGn&W9`*F zSd&>IhFD38r%>>Stt`02s}HR29acmribCCz|DV>A(M~1Q9}&mY!zxJs;GS-ZQzE%G zHm96NyJ&Pu 9j>@(Ff(t)5a|N-j`+_amV5 >!W$-M*YtqUvv {8MTh^qt+r zSjfpy5zx;6)D*)BBj`($k$>nY1(r4fj4uBW#uE}>R|Boce(HV+sDI7jpU`BnNB||q zpK|7}Uk6E4X5vpq4;+2kwn0o2pVL|0e2uJk?e_Rrg6gGh1YH~hS=W?z)wF;AvXuYa z{)DeFO`uzcCsy>CdU)%8kG|tY)gQ7qJUS5qdKs6PduMZ+>d$6~Rpk?q3;M0tlfuKL zGXiI}Wpyth{jbGYXwQ3~FdGhaa6Gaks{CaH<&QO)M)`S?|M@=p7drg+jhOfIWBiR9 zcU}Lv3-G@s+JCqFA8Y@n&-?$b)qfEE52F9}N%|jF{U38rCjoP>2030>=cN-aX5D!6 MT3xYJ{==950+eI-SpWb4 literal 0 HcmV?d00001 diff --git a/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts b/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts index 3ce9548bef656..64a1b52ac6d7e 100644 --- a/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts +++ b/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts @@ -128,3 +128,22 @@ test.describe('horizontalbarchart - Basic', () => { await expect(tooltip.nth(1).locator('div').first()).toHaveText('Passport numbers (USA) 23'); }); }); + +test.describe('horizontalbarchart - RTL', () => { + test.beforeEach(async ({ page }) => { + await page.goto(fixtureURL('components-horizontalbarchart--basic')); + await page.waitForFunction(() => customElements.whenDefined('fluent-horizontalbarchart')); + }); + + test('Should render chart properly in RTL mode', async ({ page }) => { + const element = page.locator('fluent-horizontalbarchart'); + await page.setContent(/* html */ ` + ++ `); + await expect(element).toHaveScreenshot(); + }); +}); diff --git a/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts-snapshots/horizontalbarchart---RTL-Should-render-chart-properly-in-RTL-mode-1-chromium-win32.png b/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts-snapshots/horizontalbarchart---RTL-Should-render-chart-properly-in-RTL-mode-1-chromium-win32.png new file mode 100644 index 0000000000000000000000000000000000000000..6d5cf44ba179aec3ca72b9b9a13056edade3cea1 GIT binary patch literal 9759 zcmb_?XIN8Pw=R3T6$JrNkzPdUO}f-rXi^2F211iwr4vfFsB}TPbT_?)NDG~aAiW6E zA)$8&JrGhj0l)J+_xbLh@7#0$WUf4Gtuf~ubBuSqV~iE~Qd^aZf{B8RjEw4qnvxzF z*_9L0b^Y}}Nxyu5MmLj&KfLr*pOIAzvTTr%age=Gdiu&ga|an5@xU=;a^J!{wxcd= z9`fgiiL2_P$qp;bv&3qk`Z#qX>!QN#ZJ~dth2Hl3Y)buP5(@i8{dT+++ Gv6~?nJfZ{_Bn`f3|)z>oC9fijzFFsZC1i&U=_ok=Uf!^-e|WDjj06U&+zPuDImf zkOfq4BOn_bxM`$AC^gkrzd>5v-*>T-uF|9nvTt+`ddW%SNEk0WX%JEDnjSY>fhX<} zI`{+U>b9d(a?B3KDrqElJPLh$H8hrmlt*;NpC!?dgwR_Qo*DDa+=@pf5`!MOL0)b} zs(F1GeY%jl;^!x3G(7qm^N*oRzm6~quVk%v$!C2!CJ6$Jo&R``lTztYLTcEsM83Wp zYiE&md7gckE-gWu=v10!3@u}u5Rt!Wb0TTiI$0a_cqc`YHaCd0zUEixopibqcHl6> zEcUB_duj#mH+tHx>9UU% PMtU# zJ{&0|*BwTqkJ?F*o9W k9 zB2X~emSVHx(`T< Wn$>@f$}=d1zJv2#%_)9HogVJ zrw`Mm<)M)Qi-Xk${30fW^BX`p2era8e<#C5i1bNW!@P9MG&vlHN8`QPe@{H+l6+IT zlQnxBt#ZX8ekz}ywr6=aN}k!`;S51unbCJyNQSiYNJ5PwZYDX!;-->%8Jdykqx`+^ zdE~(#WMq3IeA}jt60yBqK1- ?4sgfv%MTdo`$`=qDAtD z&2*8YS=pEBCF1(2;5WiQc`i)*o5q8Pd~rEk*b&$o?e<{~lifsH8%Xu?C_5?3Sd|Ld zj5r%h3R%E5XYh#El=q}7+m;5Zz|ud;XE;xBrb+iUjz*)s>h5e6-yh-S281=8T7R=B zW{j;xRw2o63~GuTcMm 3Lq6{&jIU-?qNSNy6)G2fY^2J;ZU*`s!5wU7K4< zot$B;+$&q-68NH518+@>ioZlID8Vv~XZQ=JZuTAh$R>|i!z #*XM7C;8KY_09-hL zEeJ1Sf!|^eJ~FDC=A2)_oB(h+(nM{c(|Q67aRNDyIvh>Lrpf_Ms{sV*&^VP >Yl2lY4e z^CZM94scKjJCD&*FHr^L5>|{tzY(BwIAGlO2^Lm&2h)muEY~5)Rmh~nc_Af3QY#b0 zMFCFEgF$vk!1F`|ej3QhX(1?0Jk7GKI5}@ul49BwOuK-k`lm`*4Fb9jLBP(p%Rx@a z@c_WNHp5aMZa}<;uqfBJdVyhXw{+$zb_sL1)}TdugqR#QdLVMS6_2f5ySQ7ys7st~ zoy_d+OojNlo&5qNf3$$u6D}9;tdfMNsH5g?u)sMerbD)z=Z0!;hvJnl7d!Eh7b3KK zzTVYJj8i;|eqWPW*GeSJ!iKag 4$(S5i<%MQ4d|0 zbU%lSXH-->T|U9>pk6ZLcA>ey%al5)N#iG}O9y*0ed_{y$Q++vARbvhm9FCd?B=|R z%udznG(0nZ7wWo;8{gwxnF&w#b+Bm7(s;ac(A$|h6MGX#4}9Mz9dj8Wr1`6V88}%+ zs1?oR^am@*Lw%Gw7 !VV*y{1=OYEw^>gFizfWen8$d^l-po)ON{ zE1Rt@S6xq~)&2>z^DgbFUzaQ!qn0^87C-jNrmg~P2Dm^Xu(dfMj3IC=29Qzpu?z|( zg#AWX!z5oJb0$?o@5hjlUG)a zyE+Nz JPG 61S6(ob3Kj>U&lJ?GYE? 7EUkGYC@1M w=Lie0^bbgY z?vMrv?(5TOn+lFK&@T3?#V>s`?Ah&{{m4l=6D06Z-gDS`l9kq|MuH>q#YkJ(abGwN zGwK>A5e2mh%1uvC2J1RcwRuWLP5(;JbNYGHo#~;pCTV44(yo>g !5@&GsT@U_u;hcYLmhwTf6J1vQI(Wi{qh1&zE zj?6bcOol1(d%_rR2HKf$mN`6aXXv{CRU!VQ^pUdcY3s}2Dz@+5wWPi6MT`~B+7Er7 zwlb*y%Ig+YbCVq7TDzP3YTXT%vYoXF7uNbW0Wh$W2)~!SI A!TEL2;sGzNtE+dTi&2CZuA6l)*Y@l^iFbusInW-66a7%@}5vA;gJSXJW|m2gS5a z&@!uBr0t-&-Rpx4&f^fg5H16o7M(Lj_1g+uujiu7d=Pvsv7b*KJZ+^Xf`_UV_t@-e zb;?@i4U#pEvYXnxxFJSLO57=uW_88=gRR3Qw(sn%cv2+qPVqC2l zk>BEl-;WRVzqq92vn34MhPyb z;`(v<8|2NeaNWSQwZipPlhZrMvqF=7fCRaf`O`C8R4$%7JIzW(dvC@g*D6ehx+A5( z=31q4gx$u&6h ;+qFH bI#=KkS!WS6YdyLKX$KW^U@Uln>wm7 zUotcf*Gu2{_Zamb-6Tai*SZVy{bpb-c!B%>A7oyx=98kY24!s+>Q#|BrYITO^HJJq za-=3DI7{;JP8Hl$hBIAnQ&!-DzPp777t`gW{puRi4DxgiY?hM~rONb`0q(r`k*QcA zmU6*+y?f_|6A|?pkUyRUHTn4eXg^EKLXRHYOS=TfdPj^^Wk}Y_ol6s-TdC YQHKV6xk)hJidrx;dIQ?3@mfy{92NeR1fk@hgfdUPUy>&XOVJl^c$W z3YcyPpN6VoL&S5dm8YdJJilSkVA-}(qow$mgdQ`WI^!i@WP(O($UV!Gm>9CAOHKq~ z$dM>(fr91@6OmAnab@t>_7xdjCnrO2EzP!?52xPae_>DoHC!o72+DD#?%@S!t-v3& zrx+GTA36OuE_F@&X8e=H Ma8cLII ze&OJ3Xco@9`s?_>q%Qq1 Xohhur!klp>&(MF<8}3pa?>K$I)DBHZ&%a!1;cTri&{f$JB_a~;GUp% zey63$cNM0>f+pJog!_d~YVO-yaGrnnp9O?9>8=^ yCWxzZ zzURb5d&pT1+Q+>~+492w=9^phQ8Xlrbv!|xaLb>?tYZ7~fNsnjm-(NEVw_^0BOu`5 zPF#}S=7t<9sY_0suYkDrP6q>^e^2}-#CbtejVJPk9CEf0SX)3VJ#D-@VH9@84j>eW zBrTsHuu!1O{drCi(qxtjyK^`*3slh25pr^L!s6U}@1(93tLh%IfIx&$x?Wklgd5|& zJd6?7$$Zxg=o-nt|jE79oyUPd0$@Fk)}u!_}qn zOP@3Q)-+Sl;Fv=kF+$;%p*7b&KfNGaUt|61G~(L=vE$O`YKqu907>y*TRCSpu$4Od zr$TP57Z&%;6h#>8-rAcxm*z>7M(i<*@8j!Gxa2v=UYR^3dPen9P__ IBd z4Dg!2gm9d;Q$kwKRCmhijo*eeT<}eD1BY}&MeIP8A)K3DXkR`3u1K3>DnSL5+uxV` zwZDVk9T+<^=-L+ E =Pa{Ios&}eN`MJ1(BU#YUOhb5>HC8=3X>CLw>(>wfNSV2q}H2^AlAL}qV zB0NQFe%Aao$;LGm`eGzoN}LO a0;>t{ zY+Nl?-+L0emcFh?`J?M8X z?r39P; Xg%K?=K-l22HPt!jVnt|b}KG3Q`6=U zk(XEa`pZR&&Xr;cy#X lAt7%UCY`IuU>7kvQm0muc5w%6Y~W9X@%_@&0l4~9!*+u z b;uc_CA5 z{tL9;cUs(*)_*h$YgyM(i21Lp0^^so`3he79izmIED=@=1K@N1rOf3hQ`0xEv4I07 z4NanVpj (@pieCCj|s( zT^@L=d0e@P7Hlm}yU6+FDKT%qzjZwlZoVGftQ6SI)HxJ5BKSeBD_GzCXsDsn&^2|d z)Q^fDtv6DeZ2#I9L)Gy1%fd7MMieh- IU;vuBQmR9;XinxQ!n z#?|nz;0gw`cO)9;8#al^( MH)|#F+#dya%~`#rh1dLDt%o_5eM!+J1BO`8kTt54VOVEJhalJ zjkS3ESBLdG0RX8s)f+AZX$&l}uak08*cg-Q9q(Z7dvlS4@qElJtlgeegZQuUZtp*k zR_Jq8?WlxD`_Q^4ae~|5Ah`z`nh YI~|m&oXNvsHAgw%w|vXc6yVoHMl%Hetkx`PE4D<*PPGm)l=EOr{L`6Y~o!5q8M$ z^Ntv4Fm4KM_vj1r3(OM`nj8-gh9vk=jyR@9Q^j{~ufq gZ*Xd$&JWNVxXQ-D*#P zBb{7v!27d7MN7(ka0i++Bw==-ag}YveL%;oAzX=ijZ#$^E7z#hzGYU+-0+He_pz$s z@hm0^#iVW8BdzQH+U0Sh7Gl9I!a b!;k@v1AV@7eb=DEN~+cln8;~PuwRk$;)x1XQ0 zRJzIx7pV0!F=4j$L2mJyA^O%l*@2VvxUnM41n74TiIL2?S(;{Jh-f)< &aBuOu=;c53tv*kLPw&z#m~5=i&o^GMxU-c$h_b3u6oI ztaEp(p1Kx^mH0bE-=!YZH1|Ff+@2ScLzWb1{K)JKTVQpbL3nxF#ZsWPUFt$JvQZ9C zNyR?P2nM+9WR#SI%SeCAMgun&uRIGwmRHP|qtc}WJ$0%WZJ{O}9`xqNl%K^PPm)M! zX*qpMtIdLX8K6%mS&xQN8}~NHPFyl)fW~c#5SDG>{7Fn-LF!mVv?SxOmk$yDf?+9D zb7Lnu%O-PQe0X=6e&{7TGL8R|twQJBcIVxMnB_}#iU|cbtp+sU!T+2@&{W&9NS=? z!HFh)&vxeLWUwe-(wk{pz?ze#L=-AJvAHEQN6@&3zTD4A5m<&YX_FcN*DA|Kt%G*5 z>TdVdk3m^jI0lnlRv5K$#lk9%8uwhPI@I%!yLQWGMWDde-L?1r!zu^accz5TH=iEd z-|pSb6r2mNlWg?dKG`o1v)8EW@gBXInp%SCy}@3xjg3d3Z?Q@2JTcPsMoB0?FUm z!Qk;h$6Ft(A0mf)n{`{O0?jTc_Wt&@C>HC4W=Uk2;NvmjU7y5f)bW$*DUyN6Llo!w zSavG@<$c@}ZPG?H;!-|&$O~`39#>@JA-LI#`+_h-&5;wY%CydqvAWah3?`|aypYvS zx;Fog#-guRXOlCvTEk365} mmzG4ebB#Vd#ydhgF2%@x&@R- zK~78_lEsT1Vx#J_YL^c(hGp=_`t|N$`Zf*2bYN)T*1ZSJ!e+`#@h%ngD@|K3u}Cv1 zMa4Dh2R+}#d#m>)XSr^=Q%>t_5h-Fam+k82=^|#^7~*V@IYzoJu$gH|0S$_#O@;go zI}oXs8}^s8 wqFs7=SRLN2?YBx;FqDSRXoHAtWm_5>*h%g>0}DGV56@ zo0# LB_*&1MlTniaR-$z$F>o_@c~yTY(3ehbASJj zX_EZH*bapkB>Hdb%*tr4D3}=&c;mi{zdg1safOPtr$62o1Z>i{h8q%M*xVaB+bXZ= z*Y MJyf6-U`HulApefJDo^ zCo{#zuO+hkUE0#_V4h*+&Z?Xf9?i`=BpF+}z<@rE;DW&J57cFv$NQsqA=w&;TRly8 z<;4l*>-+WM>>cHe8r7a$FeCStd3ya~QX>Eq?6)o-YV0J278 K?5dn39K|@iJIv6y!fLVb z4Y9C &?ym|pSHls|aJf j{yIBjce%REU1eOu7IC(27gm#DR$ouEsq^_j&6 zEf@#ZW_OqBmie!*TBO?_WK`N?#~O0lHEuQ3F?h1CdzVcD$B&_m2f{0M4J=uTh*x~o z+$e YkdC~pXAGhRJ i#a?&cbT|9?{{bLC= zXqv2tY}Vq2zJF)iwxGX%da!8LQgL!G{LnsAWbIP5G85kN+*Ge`;*R~#AAJt=e6Si+ z^mPin#;!-Pd%N7>U#dO0#=K4A)V3o|qO;tqqXSG9vQ7r|_J4`gROOuYi~tKB1^QSg z! 5AJZhM##5lFsoicHXXtHFF-)_n` zD>2*my3I{M_i98pC@9fj8fltZRuCT#C!W+hj!!<%?NU~>Xqa4g{O2yvW_XE9A1qhD zT&+_EqE M;EJh z?yFaYo%CMo+VfDybZ4P0rwSa?QO0UD{p)iJ>dX=?SR@^LN~=?Wa*8yuUCnuEN%Wlq z5sWW$(5>8Dtj2n&NR7|lT)VaHUWw^|S4BZ5*N-d-uWs6exXy(2H{Vj=G9eWhuMS*% z3n2SX&FP>EuB=Gry0kZ*EVBH0yTc$mr2yuWWq?ngM6<0)LwNliEf{M3Hgxtmr+EKv z|5kK`Xd3g^G!cLp;zW?R?Q2q*Fr@Fk9PV|jGV!;SDfpR>{R`F)bE_SMHO#+=uS{jr z;X^kPDcSk@F4D!V{ko38KGU5LwkfIv>V-YCd7TK?!u$bN^P03fS~c;7h(jeN#*IgJ z)FVWcoBJr}@3$J}DWJ9~>THmQ9LA`I9kJS@74h;1z8+k)fQ4HcX1bJdUp|Z}+kd8! zxyNQvRXp)gnIlB5o$p4M&C&HJA}jhWW!!IK+f`z6!#;M0rfn0R7^Obhc1`6#X&CD0 z&Dt54PFM8R;Fw#5w$F4CI(ap?L_=SltNaF89~E%=*GNFls!VvK0g7Q4as6DAs@@6n zkFU2q`0B<7SQRNd?Vcao;oMFc7cpO2lpFW;ZI(XSyxRON(--?TvssU|ueUWRhIRfK z+;_l!;*|Z5ESe_If^*~*e=8-B%b#XHH_yqv`4U5n@J5doxZaeUb7S?Ya8x$f^Dt8L zKzMcJ{LkRX$m97J*kuEzPv6R{Nk!wuZrO%Y#MCvVS&99FMCUX1p4i$6A$FsUPz$LK zSAZ4USA#|5abI}_KtsH*w=b$Sj_t<(!=~JST2A>-#rnV1DzCcd=g>4a8NM(#(dp(W zUi)|)KF$Qn?ItB^z2nOiOm%- #~@kh&SHIr`Y7*ofM6HQo`NB zL&&&!cpNo~DbHy6S}*wftBmH(ad<}8oq@NNzz|=ZPo_5PPSaL>Ic#Y%{nt%DD_1wv zxqCa&th#Y1>4# >f+-y zU&w`o+O~)Pv6&~QfAK{Hl0T+-nJdr>yL0vTCg;JmALplLtXpK((f&_cB~Hp@Xyfs$ z$PBR!KRGb=V@yQ%c!kM^55W80p#1iPz$!ZBRD1##%~poItZVzQW5xz>S83zTK=d%t zG`yWRwGAwt^q16~Ixd1oOzLbk)&g(Q#(%%4LJ)fKKi(MqAcxPeky?cDAATz%G+HsZ zY_$D*RRGUYw#%xQbMjV z{Ik3nSuhc&(`7Vi z8oz&-J(1Fs3#^2{x>I35L5@zf7Z8^D-Br0@sof)t+2gXq-l;M`t~`A?ADb1DMHx0< z2UL4mtGA%`6<2rH7gxqe8Ewm9&4^C(Mg2t-O{bLaA)-m}o3_=;2vp-Z%O#kFh XyIM=JV>;#uN-Blu z5$1;47&2`1c~q<7CaVqSU!7`mvD2%Vu9YUJ-i>;&^|~k5QN83);yTG4zeUGZUVKXQ iziCumZvXEZ?D?Bmm6W(=2I?1n{z6$>sp6Ss=zjrcWK>=N literal 0 HcmV?d00001 From 02333fc55e507fdc3e28ef26cbb5794b39cfcdb3 Mon Sep 17 00:00:00 2001 From: v-baambati <132879294+v-baambati@users.noreply.github.com> Date: Tue, 5 Nov 2024 08:29:33 +0530 Subject: [PATCH 09/24] removed dependency on stories --- .../src/donut-chart/donut-chart.spec.ts | 65 +++++++++--------- ...-properly-in-RTL-mode-1-chromium-win32.png | Bin 9670 -> 10646 bytes .../horizontalbarchart.spec.ts | 20 +++--- ...-properly-in-RTL-mode-1-chromium-win32.png | Bin 9759 -> 9506 bytes 4 files changed, 44 insertions(+), 41 deletions(-) diff --git a/packages/web-components/src/donut-chart/donut-chart.spec.ts b/packages/web-components/src/donut-chart/donut-chart.spec.ts index e6408cc590d05..c8ee64329154a 100644 --- a/packages/web-components/src/donut-chart/donut-chart.spec.ts +++ b/packages/web-components/src/donut-chart/donut-chart.spec.ts @@ -7,17 +7,16 @@ import { setTheme } from '../theme/set-theme.js'; test.describe('Donut-chart - Basic', () => { test.beforeEach(async ({ page }) => { await page.goto(fixtureURL('components-donutchart--basic')); - + await page.setContent(/* html */ ` + + + `); await page.waitForFunction(() => customElements.whenDefined('fluent-donut-chart')); }); test('Should render chart properly', async ({ page }) => { const element = page.locator('fluent-donut-chart'); - const legends = element.locator('.legendText'); - await page.setContent(/* html */ ` -- - `); + const legends = element.locator('.legend-text'); await expect(legends.nth(0).getByText('first')).toBeVisible(); await expect(legends.nth(1).getByText('second')).toBeVisible(); await expect(element.getByText('39,000')).toBeVisible(); @@ -25,27 +24,30 @@ test.describe('Donut-chart - Basic', () => { test('Should render path with proper attributes and css', async ({ page }) => { const element = page.locator('fluent-donut-chart'); - const firstPath = element.getByLabel('first,'); - await expect(firstPath).toHaveAttribute('fill', '#0099BC'); - await expect(firstPath).toHaveAttribute('aria-label', 'first, 20000.'); - await expect(firstPath). + const arcList = element.locator('.arc'); + await expect(arcList).toHaveCount(2); + await expect(arcList.nth(0)).toHaveAttribute('fill', '#637cef'); + await expect(arcList.nth(0)).toHaveAttribute('aria-label', 'first, 20000.'); + await expect(arcList.nth(0)). toHaveAttribute('d', 'M-76.547,47.334A90,90,0,0,1,-1.055,-89.994L-1.055,-54.99A55,55,0,0,0,-46.993,28.577Z'); - await expect(firstPath).toHaveCSS('fill', 'rgb(0, 153, 188)'); - await expect(firstPath).toHaveCSS('--borderRadiusMedium', '4px'); + await expect(arcList.nth(0)).toHaveCSS('fill', 'rgb(99, 124, 239)'); + await expect(arcList.nth(0)).toHaveCSS('--borderRadiusMedium', '4px'); - const secondPath = element.getByLabel('second,'); - await expect(secondPath).toHaveAttribute('fill', '#77004D'); - await expect(secondPath).toHaveAttribute('aria-label', 'second, 39000.'); - await expect(secondPath). + await expect(arcList.nth(1)).toHaveAttribute('fill', '#e3008c'); + await expect(arcList.nth(1)).toHaveAttribute('aria-label', 'second, 39000.'); + await expect(arcList.nth(1)). toHaveAttribute('d', 'M1.055,-89.994A90,90,0,1,1,-75.417,49.115L-45.863,30.358A55,55,0,1,0,1.055,-54.99Z'); + await expect(arcList.nth(1)).toHaveCSS('fill', 'rgb(227, 0, 140)'); + await expect(arcList.nth(1)).toHaveCSS('--borderRadiusMedium', '4px'); + }); test('Should render legends data properly', async ({ page }) => { const element = page.locator('fluent-donut-chart'); - const legends = element.getByRole('button'); + const legends = element.getByRole('option'); await expect(legends).toHaveCount(2); - const firstLegend = element.getByRole('button', { name: 'First' }); - const secondLegend = element.getByRole('button', { name: 'Second' }); + const firstLegend = element.getByRole('option', { name: 'First' }); + const secondLegend = element.getByRole('option', { name: 'Second' }); await expect(firstLegend).toBeVisible(); await expect(firstLegend).toHaveText('first'); await expect(firstLegend).toHaveCSS('--borderRadiusMedium', '4px'); @@ -58,7 +60,7 @@ test.describe('Donut-chart - Basic', () => { const element = page.locator('fluent-donut-chart'); const firstPath = element.getByLabel('first,'); const secondPath = element.getByLabel('second,'); - const firstLegend = element.getByRole('button', { name: 'First' }); + const firstLegend = element.getByRole('option', { name: 'First' }); //mouse events await firstLegend.click(); await expect(firstPath).toHaveCSS('opacity', '1'); @@ -72,7 +74,7 @@ test.describe('Donut-chart - Basic', () => { const element = page.locator('fluent-donut-chart'); const firstPath = element.getByLabel('first,'); const secondPath = element.getByLabel('second,'); - const firstLegend = element.getByRole('button', { name: 'First' }); + const firstLegend = element.getByRole('option', { name: 'First' }); //mouse events await firstLegend.dispatchEvent('mouseover'); await expect(firstPath).toHaveCSS('opacity', '1'); @@ -85,14 +87,14 @@ test.describe('Donut-chart - Basic', () => { test('Should show callout with mouse hover event on path', async ({ page }) => { const element = page.locator('fluent-donut-chart'); const firstPath = element.getByLabel('first,'); - const calloutRoot = element.locator('.calloutContentRoot') - await expect(calloutRoot).toHaveCount(1); - await expect(calloutRoot).not.toHaveCSS('opacity', '1'); + const calloutRoot = element.locator('.tooltip') + await expect(calloutRoot).toHaveCount(0); await firstPath.dispatchEvent('mouseover'); + await expect(calloutRoot).toHaveCount(1); await expect(calloutRoot).toHaveCSS('opacity', '1'); - const calloutLegendText = await element.locator('.calloutLegendText'); + const calloutLegendText = await element.locator('.tooltip-legend-text'); await expect(calloutLegendText).toHaveText('first'); - const calloutContentY = await element.locator('.calloutContentY'); + const calloutContentY = await element.locator('.tooltip-content-y'); await expect(calloutContentY).toHaveText('20000'); await firstPath.dispatchEvent('mouseout'); await expect(calloutRoot).not.toHaveCSS('opacity', '0'); @@ -101,14 +103,13 @@ test.describe('Donut-chart - Basic', () => { test('Should update callout data when mouse moved from one path to another path', async ({ page }) => { const element = page.locator('fluent-donut-chart'); const firstPath = element.getByLabel('first,'); - const calloutRoot = element.locator('.calloutContentRoot') - await expect(calloutRoot).toHaveCount(1); - await expect(calloutRoot).not.toHaveCSS('opacity', '1'); + const calloutRoot = element.locator('.tooltip') + await expect(calloutRoot).toHaveCount(0); await firstPath.dispatchEvent('mouseover'); await expect(calloutRoot).toHaveCSS('opacity', '1'); - const calloutLegendText = await element.locator('.calloutLegendText'); + const calloutLegendText = await element.locator('.tooltip-legend-text'); await expect(calloutLegendText).toHaveText('first'); - const calloutContentY = await element.locator('.calloutContentY'); + const calloutContentY = await element.locator('.tooltip-content-y'); await expect(calloutContentY).toHaveText('20000'); const secondPath = element.getByLabel('second,'); await secondPath.dispatchEvent('mouseover'); @@ -120,7 +121,7 @@ test.describe('Donut-chart - Basic', () => { test.describe('Donut-chart - RTL', () => { test.beforeEach(async ({ page }) => { - await page.goto(fixtureURL('components-donutchart--basic')); + await page.goto(fixtureURL('components-donutchart--rtl')); await page.waitForFunction(() => customElements.whenDefined('fluent-donut-chart')); }); diff --git a/packages/web-components/src/donut-chart/donut-chart.spec.ts-snapshots/Donut-chart---RTL-Should-render-chart-properly-in-RTL-mode-1-chromium-win32.png b/packages/web-components/src/donut-chart/donut-chart.spec.ts-snapshots/Donut-chart---RTL-Should-render-chart-properly-in-RTL-mode-1-chromium-win32.png index f00a2f231a6dc812cc19f02494497c6823ae0ea5..7469c7f684e5c90b9e2c86e87b82e461179cd150 100644 GIT binary patch literal 10646 zcmeHtcQl+q_kVhnD61yXqJ^kIL?>88uWOgEf`}GG535A9wTS4^L-e+*ccO);2^LYK ztg?$$ccXtd?_a<3`}_U#J?EZh<~etsnR{mL{mk6YJW&RE8dMbbDXv_(LZ$f}XhbUe zuUxtIjqDn!W=1HDB^6gajWkrQRF1H2Ub*t%iY8FmatTPQQAe9KjIHFpbOwIA? z??+cdDDrP=Q8HXh5^=15czzDxFAy?QTIa!>pLO4Uncz9oexks~w;m9eUsV- lzaoCFFt7%aH%~g_9X}v+G0mZ-}#Fc^UC+%92#pJu#hXa&}@V!_A@V zV$t3^y}>T3K*ody-YPA}auvF-N#6x{?}rPCsZT2CE&N9&x&KwRkPn6C3aw=_WBEoK zKY|;z23fQQEkS74#hh6P?k!ptE+hqepBD`4eNRAKY-7%61#i`MC>XcIcFB5Adhf^J zR_{$!d4L`Lt}lMbyge#MlkIj=W>RKU=w(6@YCQuU-hSEdyTY;owfm?6y%qw8PqzGu zfZWO=ia}-Pev8Yz`)u<{c89<%tjSl|l80W#Mc#?Uc6sFqSIq4p>mrRr4)-0UE%|^< z_g54#2YfXLe4g_yr>~;Ku(htG PqWRcn+{YrDD%jn_#lx5z0=*%|M925d2R*LzrecQNq zy$8y62{eK<=o<~o_<&@6K$F3Ho @;$6)OiB2O>16NW0I4wNmLDx&P zDA&s=#kp<)q!;5>YXwQ0?mLn0`(*7ne_CmQ8^ (1rH*a! 4^0lo2fPxhv}mkZK -r)4$E%$9A>JIq&lsZrr44XY8rscVZW5>7K>jO|$J>Im! z mb6Z9HyUy@M?@np_$T*!$(_;av-`m>)XWZD3ZBC3(QZ%S)eeBJ6ORgS z-Kz^%D0-?liYVjC>4KV6BI^!uC-{by=gD8n7n45stx~iaD0lngDF>f&j~LU2kd|3q zM8BVxf_ZZB0y*-x#u(MBOi7646P2$vNA;33Or| OztmV{9KxCDLPagM&{fX zbemAt6^6N_hNc_yfBP`qEo-`Deg;w?8h!Ki4i+u-vt=O~z3Xm%`y=bzS{TRm;EH7M zZ&y(vd&?WP5Gty}k?M?*qwCA!aX(xXdG-3mB94BPo{X 6RtxP; z5kyTx^VXr!p;SN2H?_~%jBtBPDZ9EtpsG^Hk-w>D?}U>l7TmD7>)?RwC3A-iUb>uH zYy4%Wbiq146IJs{dN8Fe*;pZ{U0$YDE~tGU*F~fkMo)`0Q^iH>-mf-@@cy ?cN z8?6U&uP56e`|XZ$SgVB;92PA&35dC8r)L^y`sRq$0u`ponc;e*RM^xejE(-4ZR8{4 z$kHBYJPT@#y-G;NVUYPaA(Cl=zPWxh_z90FV>(JN+kN >xAi6tJJ#Gl3`1|A*K%xC#iyP-be;UMN>RAoZ8z#Q{S4E+g5F-~-r&N&aC{5C zbadWswX{L@*;S8Jk-sRqsia{<)_(eeDBG1U5Np1_dfiZBToPc+2>4OpF2g-r;s0Fh zOWSmrO19q{r^OkzGu#b1oAA+)va4+jG;v_xCJ7__(VwR;%B)U*?Jwz*& )ea_ zBUKqa(j|pYE`C+4rf{a)?>IHsRP(5>hH_7~ew|F_?QB&suy*;qLQ5oEzhAf7 AZatlhPZa-^ln5@&dt1wVd^RsxtPl;u3*NqV1FeH9U0T@LvD1*bj@AVTrdh{DbGY zcBgE=6{a2Uu)gQL$)7UNh=SBNRQ*;}w0GvYUe?y= zX!sGsdT#RW$_k>z+eUc4`tapT{X0BD2WrIE@ezV0Nzj}?77!*Lh12w-ad#DR5fy5v zl)nFs{yMp{c6_%Jy?vwqwr^EKHxue+l+olxWXaf#SblAqH$V5~%A?Uc!>}Gd326z- zahU{~kXxz?y0bx;&;)+KT1;Jq!p^k+z@q&z+hmHu$7X*(MA@lES!DRI3@Fcl8b9sx z8woV4_4Y35(BBg!fwW;#TUmZPBC@X`!4}sEPq%?zY|nRzPBkNB%2j!(&~+-o;>CvA z595?Usg5-f1I-RMp$^^g(HGR_7vUfauC7h7#J*CuS<5oqk7kEDGu3dbN|)qd4z?2o zo8u os1dIzL=qERoUhc^}KXNNX@7vh-=Lsjv{Gp2zL~mvf=Z(P|dkfuk z9+iY3e-lQskcNnn>$zmOq)&2?Kw8uHH>d=G+$qoGAQUpZL=DJQqkkjZ { zX}GU#BgKc>3Ue80< P4bC`d-met1+eC}4OB;E{4WwL$+*n+{`>|5q395Zc5y z4bI$IM58Z76`-|Y)-><)a|h55Pmk0g?9|qY^=U}BzOL2FH-1GN=ZC$6P>w)coX2)A zhrHyGi*2;FH^{bTN?1q#4S~gQ&vG(`dEXrRYmA$lm@$;U1{R-U79INB`~_3cQ96<7 z9bL$?;Gye^(MgT7z^KgmP2g4spz1;`#$TwcKg}v*zHB0cTU}=>^YSd!ZVuK+B!Gag z7Hj^93T9-j875yMiUf4W%4w!tX6sz$`;bM%2YF+o(0+5zLHEJ-M}5Z0g!Z91d^DoI zd>}iIkL&b%IkS?R>949$XaFZN={Z`;_Tt1vt%X7{D=VKX&sIA-9Xu_>1zVEW2hG$r zHQj7M)CXo|Eri0i!qY^9e1zcm?w@kkgR7NVvseD`3Pl=#i*D7h@mQX~{E+$_xl_H) zb$c^CtA|73ZiN6qy!(pJL9zzpC2m;q2$(+#seUs8X%m4Kafm6v9DM`;Xyy?s_vmAP zf&GQ^Aw8hNn$U|+@e`o3?VqCO!3(fJT0s2Xw)_f4I4kgUT}GX2Oeg(Pb1k1;)+Jzh zS4jv)BxeNt?)V$vZQNq#N7;d*kH09e!w)~#ikZUR%D3;h^rr*Fi}8)#-St(8=lS{Q zN#z4#6_;&K^F_&CRF>!^vXDkri?{}+1yFs?&Ys&cInhhZ3HSgnUjBL{b?(P5I5evP zOgbD|4bmM<*yK~p)&iPbn&sLr%bgO=^tXZe{!aoA(Fd}ilElI?IGp0Z*WzQVS7K3C z{wDFLr8$Y6eq4i|WFh~ZMj^-6XB=CNBYsVuUm8$h={E$SEMpS)O9kW`#`Nyb9|~F+ zFCFhSfGk@Ci<+Ik6vZtkWW1qr{ C-+PnltQFe}1ZElCw(?xOKX3UXssT!mym8ut`n8N ?pI|< z8FW?rlzKEIcnmCU_k=pubC>UL$<3DZQhUbsdfHEHGfEx1n
p~D zByPRkzWm9H%}^>|IPehyE$&-p=>_8@k>HgyhW?*5c95(?2G-7};mUCkmGFW)Xt){> zNYGj-Jn}2^{hV>0;d7XHFA4}Opk&W!{xiFbC{0IPcV^PbX@2m>*IJw-7$LB~chdhw z$se8x&_?N6qqt4SGA-5AS`ef#8MOQ)Q-Umgy_lYPc~`=-7afZb@EbY%eQp9YakG$K z?-WywjPYCT4evcUyd6Og`1Q8!nH%~Z`BR%FZad? 8WC7I zq96MCcrBfjNSpGWTZ20L(h}7->VQD=z?n?_DP+30pB!3oWN@``eMp!(2AuMa+M4&f zBuBi~kT6~xYS ErfuZn*0fDtdkz9#{0_D!sT$KX4N(S8xV?1~1{g{O3IG6%?5*{fudstC zIDZ|osI@2i90Ua3u4lHAs86HW-eYxSDW^H?u7Hyd3Qx3oh};xYPH0 3EbHj! zZeD`bIViteqroG zuF}8!$X)D`Dr_lzbPJfDmhFSb2wRUyk8+Nm**T{Nv(_rQ(E|*}zLs3=knyrY-8z|| zJ)kpvQ~M135lUfmYhamZ%$`~EYB&UuUYbr4go2;UJ(|}pwe*I|$egTzqq`wu_@mLu zH
+J51|>#|?|8SdVx?oF>|%HCL|hzHvR+B$wL6nZhC3{>)L0D* zR+g8P2#vtJ2`r~@ezBE;LqSdK!%GqFcsN!GrfAzqs3whx*bWZH9*b@PlhTvjy>~KK zW2Q(*a_>@B&RMOhsq}lm15sR)R19$9k?n|TNH7_jB6mt^4a))q@*+qbPJbRmgm`^h z=Ve*HS18in+2M@O=y2-He_h0W*Yl2Xss*vQR?1^tDYv8fg=OO9@~7X<&y%apUcTN> z4)y|-rycx>UaY%&A5?;@@F#A*9_4M>!yD)LBO80gAm`)JDRu?e^x#7;r{S$gt0A|l z45VhD0)Bq8?OIN2$;CmAsGb$e?)Z7a^xrYz3uFVyWt=ra(*z%Hrp;~Lb3FIA_$?MS zMHB2`O4xT%yL5mu0(ckXU}L-OvZJHA=v=Frn5{WsHB!hU;2+rr__(w>e4o_>C-Lf; z8=#z&)n_mT4o8mn4!~|N4iD=_UHn(lw#*P(sq&8wR$OqdvaFKX|QE7{$0#=6~_8@=jGGyzFKKXySK01gqbYYyUB8H0QOd z ?#;m;(B*jTUDYoVs^-{8&~IW#}Dy58;< z6yg%U5bAQlnctpmP_|gd@?jp}!J_^&gFit(Q9`C~sLm%He1BhT6Lk%)7wT+o9EmM- zV<$BW?`&^oNr9amd%iGUfnAXMCL8#^Pt{E7Zna|jqaYLo{8_Q27=}^m*x|X$lT6c{ zj2w4oX{M0!M7MX3j7w!7-F6)cTyV17TnzLM&DGi43=7EV!Y*k3Y$7~%IPTrw;{=D( z8Z-O-tq#RFL+0u1#IL%!8hiCWnkXT}BRefGe{ga#7i(>A4R!}$)xM@2GVHcl|8@j- zisbsJac5#yRNHkvvIz_%eKe}j_mnu5rS;Zl@cQtxD~q~Q#4*O<8Vwj*Td63II3w4d zo-ZGN4elH<4c4_qm0PjZUB1)m=M}&oIo=+OL!Gd!x~$x2i+b590#l$)Sx8WuUecob zYCuin4G}1K^;Sul@2`>-W}%TDW-euS{I=s0#|mw{lSy8j93&`A4cN7K-m>~i)w?m1 zk^^eN=j>GNOWyjkSmRE+(sY~xpDNf7@4C;;7bbmGnT7kFl7%Fv8e?_Zg?VcFmStt4 zvMvQ)^fz02aim`tS6-*@qZ?#`O&vB}Z bB6)GP+@~@S8|E`c-VL&iD1r9}R<@rc3zG;<65;8g%F+>JX 8 zR+B*z`wAdGX`k$pAaCdXR2Fya!f(ML#zSGC?)Em`_)Kw22Gx)^m{py~nf^hYD|fFO zM2s_q?O0f4)Rd7dmkM}wZr?k=NiG(Amo5RLo_8`D+ lN_Tu!7M!HZEvb`b%q(Y73HYkna3~ z4Pjw_JAiBT(VgKEbv`Tw2j!ort3hW{uRn{wr(c@=u30qCadejWYhLz8W-qgd;=z1) zU;B|SJ7wR_K(v0POS|)8b6Vdj0>lV#EF>N*8A{RqA)S%@a22@VL))LtL{|(q{Y18Y zHEuz2^31WUMRqst8rpGwrXs+A4n5$;?ZTcYIBi!vWgNR%J}WJWTE7+4rGhm8#kkRH z`sjQ*Csb|Ri*uU!uDP8tFnWo_X?HB%)gk32gG%o1GaaFR;g6>vc!mZ6E`*=;+i#;( z0X *EkG zXOlzZY2;aQ@A8~mWqLe*n*IczY~}TWoo20H&%he+%lE|_!TlH1<{mN%(x!on&m{qp ztnHA~5$NFUR*v-VXNr$@Dh%nod+;9UwvLXqIu5m9XS##Ac^9USG;53>sLB>5|E_6x z+oxNSOBW+;25uZ>$=(B?+ZvENZY?Z&WbPj#on93+`h5*h>J^)79B?YNnl (>tt#vM_43liIh}f5@&bNKfhXE(rcUY}^)nNrdDL^y zwY5kDp`!fL)`?)h#x?yHELu0yl@BLtk@IEecz|;IbFwa{w}u3bx_Q}w!hAInp-JMn z|IO=#OWYKUSKKfbmltUF*~x<0Fl9#+T=0)`o>#iw;Th=g OJkYkmSFc2eF7s)&D^P060)#p)$lgwWsUtQ{~wySmCV(s z%t(>U?MwIPP=Q*Lm1c*+qhC5W?q6hqV*OO4X iL9vW<`gb4|aI_8jo zLG{Qfmlyv_U7|vNqE->nG80vOO>ad8N0E5soOrNKnOFWET$QG}vcP)pKXfY4M3Q^4 zdi5EZ)#ILgy3vgSE!;yxGWYX}(}elv im kXqR|2&nr-K5qXn4##C3o4Ul9-0fX8^QdFFCLEQZkK(KjOTF|UTx zQUjVhPv#${D8yBITC_Jt$)b8ueeF{{Xpm}eKig$B;^}_&UbRS70)G>amPnM5#c}A| z0cRD?q@paZa+8LtP+&c1$@LCEC7ti2{`?Hg8Elq D-9e6K*&O zVV~)^vknU+Q_moNFTvwGi6^an9<|7#o+0+0W-_v8TZ6=&q2=?Yx7)2!zDreZ6-^qA zsn--K_A_lc$N@}%w7#_&${zVp7J1SI+AK2I -)%8S(W>7;3 z{R;1uOzwYK3x9y0f9kWNup}R64Iw#U<^Ie}gU;t!GtmD<1&^>sqQ<6b^$y*h!af z-j^*baz~^U_@^uP8FPCm-nCy0n}VE9x`O@g4nO3*OWLh}b+pNy{N9}>)X{2M1LAQp z1wot2gJajJ`bvAD%pt`_avDmrRz3RX*XXUS{Tj=*kF;sbQ`i~ypbxGYT$aKPYtFwG z9@4?ot^wk${hr9q|I>q6UF=SwbagrhK=}_R_t0u~;mX+FOWj=6BCYH18y+fE3hK zQ@s2nCY9vYBy>n7BA8*8AJF%^oNQ(dUY`;^lPKEmrDz*uG{-An^|G<%lJRDBg)!~C zl&Ch@++U@ncB1?Zm>d))RfZUWmj`(SvUr<=^^L5>m7K`xMo{Ub6Gjzt(yUbSET!Om z7b+VhwdNBFbiZDyVbnl;mI*g~FO*HaLcaWAZ2hfM8a@{m{TWKZ8|>eC#3(>o8g^P5 z=#7zvQM6lwHe^^**5YH9J*%7`o7@PgUmws!IN_+kyr3MGY4c@d-1uG4^Pz2@J7wYO z(c|8g3xSmj-t`OH$ExGOqcl##4Ogy^1ONRC0KM>xE_%*j 0emjZlR3-e*R8Kox>pK@nbMFdVK;?nnNZIl->&^PUYe!_f69WMFA( xXNfYXD*U`vQ;JLZ{1mcqL(jd9ST3Pq;XC5?*K8LzG66 z(uP`I>za?k?L-81+eDA{SN(o$Ry36M|Mc$~i+%oeC@E7x_~IBF@pUu!-n!*QYMS5> zFk4qMx{s8}%6wOl5zd~jEy-%i1AapeWel{YW$OmpEezfB^E)6hzaQgcWWenMty
G553;`z2sc>(cy3C2Af8M}4+(vYzZO`( d78~;viv#>Cy zbAs2z+{jVn>|=F~qmRZ8!f4<}d-c4|K!5I8MYh#u%v_Tu5cq>$;%TxeZQ7ugM2fwC zc1eb~plXaL9x<^s*g+m`?z*R8Z_h&y*lfm9x;+k}EJ_Y1F=K3FH5o)}r)vH-Rkh8B zfurwzIs~*RRNL}06C_Ah^l-R7DJ9Q43bTX8j~}wN(kbT!9VUbersGX`bTg}7VOwA0 zhv|=!(!4QI-+9xLo-Ti%MdZ7K>!W~cjFf8g3?~APm5#IMMKR^N>~5;&NA%iMw?fxN zB|LPEy?{yW(hU=zZ2Eb)@_zlEWh&wuo=;KW?mcLn$aIM=%ojC>I^A{b=i s;W|X ?`NonueOfycXTxZhwLGH7}%?(|wIG zx0Cpf%_9 aj@IR*kF78qptNEOK4n-4)8w?=83jVq`!Yb4s)gR-g$H zGTCeIgSMEk#qcOza)>>vT!fbZ*3FINu6CW! Jl+Lh?$-J-EsboepFgp+cncBxY0cm?NLw#2kDQ^7auWv+S%I91Yw6j zWq;Gj3MP9z&m+UvfNqLqQ~p@KcG_t#P_kr{#if>(=Jx0Y{RWouBO)6>zA0geDdJ{N z_uXms8t2hYkYUy1Q>)n$g831J`}a!e>R?NcDD8mH^g!F(%$urbqK$JHk2TV`TW2BP zszJ%{VtCk)uJ5^@iGNndv`vBhlLI=FkxpycUc7ca3iN2h; z8dvowNb`B$kcXZ%v$XQt<|oc{CFJ+7TRYg4_^j>hW4ytooMrI0Z+SAk-DdVjv+OgL zIi 98aN}$;hEOvk!e9`V5{= zwyfU;9~0)N6^g^5noaGTb *hqGjoHhsqSTEm4E!R z;vGFR4<4Wr?~jiYR6)2}uVlA-%tbC#J{=yaYra>TD=bJ;)7jbOFGY1>Tx7imOBmWo zIII5?@IsXIuRGaAw<|8{Yr6Phty0&;;U0k6iFUW_qFbIj)Z)Sa7_*mAIDwJcKg$#T zp#3Z#>c#pG-s;TyeShHEEwX>EzIKN7cA~1b_Xy~Y+uR%@lU=LdFRd+@lxNbLEnj5w z-&ANIfxp^PPio$EcxrqX0%DA`?_0HQSota I~@ z8@kv1__Uw{kp{|+wcp0m4j4LC;unHe)W{^lg5#vF63&pv2lrB?C{gcy`t=KsaqfEu zjz{~>`-e`Xdmg)#^9;<()Ktp@^u++~GI3K)eHb!c&uYL1M}t$_xTm0*zFUuMF_bL? z&QaBmRBK0vT}x|Tz-O;rS4T)|jzr#rUC?vIq87g bAe)a?w+uL3;uKhnXQ z`r8D1UP@2Y0kb8~e$3>QWl(w~KMi#&+FN8|Gtu(K(K;nRI*Oc#Lga@iO3Yp6_ZFzc z5&@6-XAI9)T7D@YvecaUVR|D|7ZW7{0rlE{%)^+GX $j3kd4+ z`zmSNL4=9KUS@N_-f;o0G{B74j&7}*YVXs8-3? QG2RM4oi0i)2WkxK zAKG{X3yM3ftX6rfZ&K&Zl2F 0BTz+ zWS0_id2|sylv>8;!00XLt33a<1zKyd^{{#Z31}~ZBOQ1lB*7x8aILt~ J<6Xm(J3&J)pB ;bXxA|N9|U8 z!25Gx3m(PHUx-w7>1Af|{&bO!*;(pe%bU3;5+K+RBeHLbn-BYZnQ4(CnKTXYE5{au zr{2*Z^Q@5O@5g3vzxg90p5 NBR6eoX7%BD4uejjC%PFbSPg?B~gNugy-#)ob*1zQhpEb_pJn(9jM0$CAp; zzRpNvQoQVl9Yx923n}~g+~mNENpR&(oxxZtogVv=UuIm3sK@@b+I*8%a-$Ef(yP5` zIOSM+yNC}U mcKD`u;?mO3YCIchr<^Dv#H;$gr+C>MuR)@l=w>s9M $)Rq$A!~x ww@O=|1)-7)#@?gq z*^;dV28-d>CF@Ft@*=OT$%j*|&(SgDc_`Y`}#dSs(n%DL@nlAf=q2~K1#U=FBpS&Z#%*7~lI;^TC59YubQ~gS2 zS+%{y(znOJUsP#pcz&6xK-l~tUg@IiNS3$`=lyw)=ay5C>mvYW3h^Gwj^N49-f`V{ zDsr3atjZ|$QZw7wm+5-at0OZfuz`#RK3*il%~@Qx|B!~d%{zWqnPDF+47Q$fI`8&! z@O%P3Q72k}52Xp=04+GP-{OA4D7Flr&JeU#yH!wUQ2~`*+gNFJ)mnxRv*ir0@YV_! zTFKXu?~y-DK@4Eblkd`4LdKEq^;P}u5vlktVm-xm-h6>`KDcx7SSHOMaxs)R{ao!% zKGBkVN^|wZEh3d$knLHYw^{R5Jj_z>l@y#%Pw^uc84Ke0;x>@*EeMO0SvRIYufZ E1*)gL^I9g{)!Iw-tO~ JhlZmrzEaN;S0qZ68x($R4UoqJ!~KfH`DvFICyS%u40g9H*+ z=&v7#My9u58@`SmL?lC9g!&)c` eewR{LT;%*(j*L*kL;n$%$=irpuRHH3HwU-=~o}9O43K zP+TQt>hi>beBMpo5C3Lf|C&X{qCdd66{6{Tp5sJp#ndvuXIZor{C%v)xL!yM;C~h| zz9kJz`AM|vsE$`@V1PXs2pl8&o}bT@N#iD#*dGOiX^;qA0r>n!LY5Qk*tAw`X4O|} zM6wUoJFNhZ+iSZ>f^r?_k9N1a1YmV{yA=vgY=g5eLEQFo(;Mv2$SynLq_M$NlN zD@Rogx2eU9AG_YiehP&cQzmJl_d(oZRwV*roo7yfq%Nf(H*x%rZ$qq6Z?=3(hd607 z&mOd@IvP{o9~dc=%rI%#dHh{~mYH%O>QOZtXJLgF^||s(T1o+E=Y&Fe>=tg*jJ?BN zSb$=}l7HVI=5f36ll+^HNYq` 0*ey#6OpHXq{cIf=PRGe$tSroic6b=U0Y&@!=9e4*08+c zl8+5trl+lPbHhnl?&8M6XUI1O!kww}yNHCAq69fbxt1G Hu;4W;`=s_fc0kCY^cyI3befnr`D}fC<+kjC@H>^C3oCqA zI%~E;fn#<;G#g4XJc7!Oqo_xPwe3=8s`8V2idw}FPw-SzG!l}|4eP&(Y7&OSw!oDs zV+tQchL9M{FV_`e)-0ug_3Ru!7r?yh?@T4Gml-jyKp8t}_NgPau04m0*`%;};kVI4 z+8=HO!hM^>> b?OU>V0O*x9L nk-Bo`(lGpoP}+Q2k(-`I$~wUdz*teqT$6uJ(V90aZzKcP)rkh zIKRrVnH^Z)*oaaWv95V=xYNOj4=xj6a M}j`rFts{ zo0YpD_tU8#ZPJ<{7q(qIx|W3wLg0HhV;w=zkVBs(efCXLt^RdUBA-#v pAS+ zzk4(ZylK}@Mejo_fjU1($>6=<`*9KhT<_M1>tGD%L6nr_wH)_(KexV4q(x_#$6}S5 z=QNDw0Kg*$;=FejsM43c`uaV)B;}3x&t1D)^EDEw$79+9=fVd*Pt*dFP@LmAp(Sb< z;JJ@;!|KGEj#YFDqq@iI8R6C4)8^Sg0X Aajs?6&WwHA{;vvl2Y{$!PG#A*@Ci2)kzez1AJMkH&tLHbsW zjHhjGY-R;U12z}UwOnh=bZT-zAZ^vIKJ~sXWz!E1bmL(CkW5Jn1^C-)r~>=sSFFw3 z8A{pWY8IO|6o;#m#LIL9>TB1jQz?;|`Q6qwV$BJP`MT$lyO+y|k(kT6mL#Mev$qs` zLGoC^52Xb16iU(^pr7~Q(9|)-k`qZwq5bty b1vDYVJXYBM7-=e!4-5SvUH@s)qA (&1?NKyUX|UZtRb4u`yaBkFdcsG}8lx$y?r*ox3iqj($rCce @n5^=&G8K4Q(aANfZmmm3d)EiuUcV6np`e z9d&iR)UsO`Mk!fu-LKIL8(l*;aaW;nds$un?|k{)Im $v;ENKDBt6vHo1jUg ziX=U+1s@&It%jG@U_YVTF3hjf#wCS64Er!uHe)?BX`q0E^KL@85LRKG>LRiE7cp?h z#8e??9;@V1OvTz=ppDnq!mmWr4tnUuweYp!rVc1L1-iM_6PKTr(fhZ>2?UP$y~R53 zuVC_tf{rv^?!Fo&U*oWMhmJmQ7=gOO?z$LM@O+Gr#% 69t&xiK+<#tt(N!#A-%ugbFx!u(=Psl z4Hh; =ZRXS%EV+Oe(lnHc-t-O4?bR~{foC{ z8pFrdi@-r+I_IACyeq-E{@`y96Z7Qoe{8&1hZ3$my>!YRw)STq%&~&S9qC*wsf_r{ zBUteIKFy-s_N5FSxo--j%GU6q`dzGv172}jtEg|kHIBbMsCE{A8q`I9{!~Fkl56M$ z{cYipI*pBGeLRpdWv0ci1LiX(RxIJMUd!3~0F$+H%3S%Y^Lvyw@)~ot@{O7nx}}2+ zyr^e_M)xgtqSw-Fs@>f)_Xk*$ycJ6GOOPLB&obM1C(ug6qA^``j#nyG5H$D*QSlE~ zl~)I33a78;PD6Zr=8oMflz#z49X4SBK7IlFiAu8F%epksL3Z J$ zX zOpDQm5m*NG{2*cfcD|wKHu|kH@YqHHRazUbx@4}52s4gj@T;%}?XP|}JF16h) z=QKZ~>!G(X59tKzp2|=OVJFVhF Zs3_)e`STtkmOeT!h(k)_>lMDV12a7+yG|~EE9~l zWPH~07@CL{KoxS2xPMVv4DF(y5nQ_bdF|xQmR@K52&Kx3I(ubN*Ec3z6gvFNgm3n( zKAQ*O0h&?(Wi@g$IiWBBesJY?mk8$o)39ER$zL(OwdRSi`z1%52wumvyndfBK ~hPcbQFC-!O^g$LsxNN5>|A- zlcYY^VL)oYf%-N%qgM94=UUBg(yjGBRS{IeXI^bocUGk5rA}v7*Aq3E2w+18H_Mej zI`uQ5R-#7VVH$t9(kv4?^?#sIpF5S<;y(lA*%cS1j3)5k;Og*q(MP|H`cyI6Um2bT zX#<1COGipygZhDoe*1j#-&gLs6or`*fDGcUdY+3eNa-_AD_UfvMa90~*={K8q1!iN z-_^Iv;=Lljo_5;cv)P3JlkV&~DuAU}-Z-aMs0V=~5zi3=H>rze2U$9Ib=@$?a%Ie} z$tCPrapG1 u82*(tL-mHP~c0 z7VfDqC+=J9sk#WR?EU%a_d-Wcyjcc~mWz7L=?97sh-`3IzK|^Us>}IQg6`d@Q*(g@ zpvS!{?hkyL+0u~LFZ2UHXQk*=5~;}h!qDGmV@eRRP`xhzOZMeQ^@E>8+{3ZrJNd@} zhsTsI9B-PR==bpeeydR@J{S~ykz6^>WOjSwQKThD<7}l@={S?Kw0KAt{lK|}Wna^_ zfG<&Txp-&?5BqE~)#YlrmV*lCN5(`=tO6U6KbUe5e`zI}HI>_N%%A1V+VdVsSdTD# zhSbT&do3^B<0Xrp>}*aupKMIttq(PiuUu|y$US#_pGgPXIc;bnA9eU6+98M%JpB5L zOjnK<<23Bq|65B|$aaw~);L=ri8r{5o=4KC?mEFuPLk=PV9`^e(-!OFSBf3^8Y<0C zu;u0Oh@x;FcUgS(a7}+I obtRNv z+D1n7m(1S&f>Rl)`(;sj#R43~VsNNBV%g}2w?0E*;mq4_jjZ`1b(NY$t=fVhS`OjW zTTfu_;;Jo;O<2e1i^N&)dWydjBj!YEPC+K(T#Lvfq68UtXQCM6;0b%e#{ho`;;?V5 z-z%+%-~|s F(-7CgZ6?%s{tqBfpD OI5;C3x+afOPwB`hWetDqmlkWE3a9_aH82 zZ_eA_OPZz=ism8L3yE(GlkpE|me*fEzGvx3Qz8oH>{hxy)pJU6pl*PICJS42{7x0$ zOspTEI!NrCbhQoAv*b75Pb_QMI8I7 >LF=eT_->Y>btv8KQs&-1e`GebsyPou7 z{60`zXDvXWMEA(oo{yA0WheaGQ#n4Nn*s*iefE&{$1BjQTacT?|HBN&i@u+wbwfuH zRNcopJdf773v1Og9wvUL(x+pR0A)V1KyDSe20!(qm`3(RA5jp^zy-KG|Ew$ReK!w2 zHeSeZ?HW8fN@nqhVLAQ@lY(NWbh@>c8b(5CI|K>g_N;z1Tw)z+%o*sP3sJsN>H5#u6=5p=EJa=W?m%D9re&&Aq53B9_N`ELRDFJP}(K#W;* z<+6Szw;z5_J`fobFVi%{aKWV4!;Up+9)wg_5q`CdwF+BeUce5rjYOf|7YRMeUo8=8 z;98kR#l?~eeL~IrH;}v98z(N7ZVhc-Jy$_g$3*!>sT3N$9`7?s6LxgOBfGn&W9`*F zSd&>IhFD38r%>>Stt`02s}HR29acmribCCz|DV>A(M~1Q9}&mY!zxJs;GS-ZQzE%G zHm96NyJ&Pu 9j>@(Ff(t)5a|N-j`+_amV5 >!W$-M*YtqUvv {8MTh^qt+r zSjfpy5zx;6)D*)BBj`($k$>nY1(r4fj4uBW#uE}>R|Boce(HV+sDI7jpU`BnNB||q zpK|7}Uk6E4X5vpq4;+2kwn0o2pVL|0e2uJk?e_Rrg6gGh1YH~hS=W?z)wF;AvXuYa z{)DeFO`uzcCsy>CdU)%8kG|tY)gQ7qJUS5qdKs6PduMZ+>d$6~Rpk?q3;M0tlfuKL zGXiI}Wpyth{jbGYXwQ3~FdGhaa6Gaks{CaH<&QO)M)`S?|M@=p7drg+jhOfIWBiR9 zcU}Lv3-G@s+JCqFA8Y@n&-?$b)qfEE52F9}N%|jF{U38rCjoP>2030>=cN-aX5D!6 MT3xYJ{==950+eI-SpWb4 diff --git a/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts b/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts index 64a1b52ac6d7e..ce2a9c8c0cb4a 100644 --- a/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts +++ b/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts @@ -5,16 +5,19 @@ import { expect, fixtureURL } from '../helpers.tests.js'; test.describe('horizontalbarchart - Basic', () => { test.beforeEach(async ({ page }) => { await page.goto(fixtureURL('components-horizontalbarchart--basic')); + await page.setContent(/* html */ ` + + `); await page.waitForFunction(() => customElements.whenDefined('fluent-horizontalbarchart')); }); test('Should render horizontalbarchart properly', async ({ page }) => { const element = page.locator('fluent-horizontalbarchart'); - await expect(element.getByRole('button', { name: 'Debit card numbers (EU and USA)' })).toBeVisible(); - await expect(element.getByRole('button', { name: 'Passport numbers (USA)' })).toBeVisible(); - await expect(element.getByRole('button', { name: 'Social security numbers' })).toBeVisible(); - await expect(element.getByRole('button', { name: 'Credit card Numbers' })).toBeVisible(); - await expect(element.getByRole('button', { name: 'Phone Numbers' })).toBeVisible(); + await expect(element.getByRole('option', { name: 'Debit card numbers (EU and USA)' })).toBeVisible(); + await expect(element.getByRole('option', { name: 'Passport numbers (USA)' })).toBeVisible(); + await expect(element.getByRole('option', { name: 'Social security numbers' })).toBeVisible(); + await expect(element.getByRole('option', { name: 'Credit card Numbers' })).toBeVisible(); + await expect(element.getByRole('option', { name: 'Phone Numbers' })).toBeVisible(); await expect(page.getByText('Monitored First')).toBeVisible(); await expect(page.getByText('Monitored Second')).toBeVisible(); await expect(page.getByText('Unmonitored')).toBeVisible(); @@ -28,7 +31,7 @@ test.describe('horizontalbarchart - Basic', () => { await expect(firstBar).toHaveCSS('fill', 'rgb(0, 153, 188)'); await expect(firstBar).toHaveCSS('opacity', '1'); await expect(firstBar).toHaveAttribute(`height`, '12'); - const barLabels = element.locator('.barLabel') + const barLabels = element.locator('.bar-label') await expect(barLabels).toHaveCount(12); const firstBarLabel = barLabels.first(); await expect(firstBarLabel).toHaveText('272'); @@ -123,9 +126,8 @@ test.describe('horizontalbarchart - Basic', () => { await expect(tooltip.nth(0).locator('div').first()).toHaveText('Debit card numbers (EU and USA) 40'); await bars.nth(0).dispatchEvent('mouseout'); await bars.nth(1).dispatchEvent('mouseover'); - await expect(tooltip).toHaveCount(2); - await expect(tooltip.nth(1)).toHaveCSS('opacity', '1'); - await expect(tooltip.nth(1).locator('div').first()).toHaveText('Passport numbers (USA) 23'); + await expect(tooltip.nth(0)).toHaveCSS('opacity', '1'); + await expect(tooltip.nth(0).locator('div').first()).toHaveText('Passport numbers (USA) 23'); }); }); diff --git a/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts-snapshots/horizontalbarchart---RTL-Should-render-chart-properly-in-RTL-mode-1-chromium-win32.png b/packages/web-components/src/horizontalbarchart/horizontalbarchart.spec.ts-snapshots/horizontalbarchart---RTL-Should-render-chart-properly-in-RTL-mode-1-chromium-win32.png index 6d5cf44ba179aec3ca72b9b9a13056edade3cea1..1dacdb2b827ee213734856dd21611858924d34b4 100644 GIT binary patch literal 9506 zcmcI~cUV)~wl8}tc0oh|scxzWQUs*KMk&&j7NkY#y$YeD*eC+hJ4lxjLJLR g*7;9wCUm0VDKGRaUeueQ01qH=*)u)O& z6cp#le-B>z6L{5FfZqp(KRk3)9#fR|GOtol+@(-eRM7KI+r$L8a;}<=?PU5h(Z` 38Q|G-sX< zYmn1qo4#V`ePR5Qq{`FyHV!^M*Q6pXb2ERLl!b&&!>saRiBTFP%TG4qo7)=%5;- z-65fnU{O%8?2~~FJYHQM?Zd4o9~>N<2co1 AIW7hzvu@|$`CCph|mwGm6#TFvtb^i|}|Ht;b8Bu^cu#QQyZRebvTXrnn#HbIeR zGcLs=T1I8DXy3lqpGHfkNV;i(9hTdU6XUgE$Hg@~eT-7o3=}I)i?`P*bT!a%s9Cwj z9>mpi-x$NXw|!#&s0V@l<_I^^$(N}|#qbpf=s<=Qv$&m=dG&YCGU5th)C8Af9A@p` zV%E&ZGgOruVbb=c&!>is9H2E}QnafTqgO_A85}cTi{w@7Uqc5^yX(Y2ZK1fXuS1!3 z62{zr6-0;fKX(P?eS-@WSj g~1D{fLG86Jl{@byF9?%EfFR2W{Pmu$6OPE8IA3E(mjdIt9339k;-=AVq- zPi+hV8$;m-s!M$1a Gl503ag1Zxz`A-wo( z>Xs X ^u5&elM0|4a`8yVx_z61k|4uyQytc?{$_eioVyzMTWz_@^M*lvsm%Pm(+U? zbKIth9(d0x?xR6h^D`mjsf=u<{+&g&>W39IH4x)f@|OFqD^z=loEHUhb|`+_l_3u= zZ;)f55c<#eD8;+8E%HC7eHYsJb1H&0V2jO!)FRL1#rsD3XXWBl+n9QA5D6)WJ!zta zF?xjppB6Xncf`6JX``Y>6EaEfv;%# z{E1iyO`$z46u{!nJZls~9UCsjEDm*#qkUxY6ooLPwJ2|K^hwMJH z9@;W{2S}!avv|(E+ tTqcYk-K{|XrquY~|HiCUbCwjrIeDK0bzIL#op!2U~=waaiM z&bFg>7Y_>y@qaQWdi5%BIWx^{)2s|3LA~$fU8i_YBTwCqCTV9&5nIUz!;bmwc(NU5 zcZOrZDK~(Ne{FEcNWA~a#O6 Wt<?(#x--DV42CR*){~ktCo!?npc5nR3g~Y8#Tk4u z{X+9O -&o%Q{RlI_|iX|7l zf5(O-Q(bRhH5jqPD% ;MW);vZbels;g3cfMbgpdIfJ+g)JE*9YlSO}ErY)xZ(7Ggoe!nr z05r4tHl%-A&8r%n{M4FTf2&rN7+LkeYB_&g@eG7<4x#~VUNC)4m`_ceVYN-n0E>)@ z6=P&_W#yvi!*N%e!rP^)&&hlj>zr><8uSn*9?o0NXS7bK-U_qsxLRbMf6C8ug*H0S z%g40T9-27lhD>1rBX3#O=np4 ZPREuukdb z$am}%fJ*15vq8zEk8SvS*hK5?*bBYoNoX_=pN5o@oSgz%O8MX0@odiJ)}xu>oxPvB zZ`-dk9W- 7g zse`RUtGV9dQ*pYYZC?P2Ww{f+;+gBj+c5|V=LHbSb^8ukI`s;4ds&{;C7OMKyW9JU za1X966KWW 918_`vFQye**g3J%^ 4aXV-}w#w%f|miq?^Rkv9|Xm z&IEI% 2i4i$a&bratd $WF-mIr zE1@pVeYu$kDITda)b)baK2$hao2LvtVaa7xrY($ED#D_{@2vKKtWqpzc-AHj4i?Y2 zEPA#*pT952&K}za?FA8tZ9}*h@y|;w`Fxwy5^Ff6OZB$XO$YF$hMY-^dUm3fwB?DO za=hr^(zv)}jyR}Z1=f62P^E(rHO#SUj7OO}XXBO5$Xeae%TC>W_Ox)$+Gx%PvGMJ) z2sQ7b;{z1d@9WOqVE%jFg0SwkVdW=^XJ8~FPmT-gc$S)fpP~O1g_IXQof6BsDW;z5 zP$Sl8K_aNAKL0h)=?PL!ZusUOkb0NX>Kgy$ymeI67O5ZSkP2qC55@isKAel5@!1l8 zB){g_myXZNO1QNA_l|=$Vuck~bgUbMn_AB}j(wGQX}41xnKtlGn*M*&3;!C;e=ReF z0mUM|@sOMW30ekO^7wCSl>hR7eod^)snD0Nv#LqajfAXG?x?B7Ye`IQ_n*c0Mg(Ql z@7r{fhNka%?Hcy-lF~mbCaP|jb-eB&^KIM40hbxG-QWkCgr}AklU`(u%m7_M8t&vw zl5czmWdGsvNZS4aY{BUA2g1dn>>{qbIQO;LgwhSgltoalW@YG^w34_2aduL6fO>Kn z^T|vb<=t?GjV*rGp{!-ZddM2e{{mIcQ|b@AT~vI sh;qhO9k zq*2qIH%tsKjA++d_Hy9ni%Hk+P*N=6HQuWhWUq(sU#~Yu-wfeA1G){g4Ikdp!w(v7 zOC1RKDE@aLR?@tO$_%y|bep;O0 eJ}2DCjuMC_Oi0AHo>! z$>lq{y+~dO*gtbZUut|E`7~`e%;|R06~-yx1sT5h^d5s*h)VVT%1%dn+!*M!+<3X{ zU&WJ+hSsEXWlhVBv*r1<#@pU^5LI>h>0E}$@&ss5Wu *$g3+BzklB#P03>6n@3uZEWH{Yr8=CS&3av--ump_^+e?3Pw z?msRc{mkUoXdJ-L3vvaW$gNC#LY{x|R)9bL~H4&sVX-v08 zfTuqaPNuPrty=2SU6s>=Y4N!At@K+o_|hE}Ma6}tj%kt^4e;(TkO-bWNo1?tU(SqY z^I3EazoK~N-d#5`>Q9G7b_bI)Gd6HUkR0K)&-|7$>rrUUO{QOtXA4cjE3Hi 8-y&g-T|Y|gg`@b*WNckZt-4B`4=NW+p% z<|!n~fAq=Bp*o*D;Y+7Trr~WGpB;5Gyf)iOqqzLRbW~#d7JiUT4nO;f{ YRNuxHNT9k*B2gGjfduYw_4W$Kj7pU-5d>xS9x7?Krv;1algae1M9%WsubV& MRJtYi=DA*iMo&{SBQPNoz0{#P;0QNx6E9!2SM@XW^Yc`L!QU^1}~+i4O_{ zI1c5u^V_K7xs@^qy<^zNyo6}kX!-ymACg308gLgE^NRkKt;j#auc03h=KlvZ{I5lz z|0ZF$y&9vWz?yN$pJ4wuoFX6~X|69^Z?Od&cE0gDU6DS}`pz$LU4C~6%;4HrFijey z6}YOU9k}r6!qm_>VeE1urR^P`x%M}HScK==GhPvLndqM$IZY0kqQB`rf@uoEO8(sO z&Gq@FD0TB%P`xpVH!p5})4)U4T`~z7qnpQZqNS*~rqxjhh;uDsNGP7Kb}B5WmF-Xu zqF22J$snyHAEs@GRnt#;WE)5NI!DFU_G6S-6mefT#B7l1EooGy!oI`y0E SCAF$yzreEz_j*+XgSUU}wGCQ9;ppyaOFp0!l{mOFB=8<&Zy?6UM)#xM>?ywk z6lVZX4-WmtPRTiUY$L{uVGn}QiPiD;4?*q7ovgu?ckHFA`>4i01J}aQ#-Ya1(lw3f z&WQ+zS+}+!rGj#a2DvaGYqSwQPCZjnyO&+iX>tRr&SC}aOrYkp{OYJYo7fab%Sh(n z=|8-RYb7r;QX!JZ e$||GVC6i&_g8lr
{~(P9e(CQK_#r({$M)`<0@<2I)yXrF(9e~rS=em6E9 zZi5;uAB{QVR{7ctR1WxeoJGSDUA7n?4(s;ZK|1g`$9?uo)V;xIR~?~-+jnTEAg9V6 zZ%XtWoE%Y1!h*>SG45-x=(q&OVtB))3$iP%jF{BTCc8gc3(PW@OqMwUx}r2rq^aN1 z@_lJXNenjTb)^73lSewNBip4cg%p{;G@MEqo>7`!b`5$Sp)*-X6 Z7Ogor;|3UJVGHhj`aC*MCVF+Y ze$ovy1MUxy23Kg)Eq*#ITC3BKyqKI6RLC^KSc?X54T$}`#nKd_733}x`*Pv9+BDyy zn6rRW(jrmBl=iZ(_ME-^m!%M|QLdFNNWe7A+_E^3RQ$}ei}EnPHi%=hJyu&e|L;9k zQMQw?O#4b9#q>>A&=U;attO@00I>~%o?Fc@zA1S?T_ejYl{PThUq8z&fF-o&9I|lg zfE`TK+N2nl7e1SsNz?8q7?%v Be3-WkJZL{mD8FhTn&8Dp7j=pV8lE8NLBSJ| zb(4LA%;3oUW&Nyvw~smLVN1xIk- DW-Dk+fJqx8R doGr&RN&`7&d5r~AZO%u=*UWmn^FH$*CR3LgqflZ! zAvnF9G8$)plQ0GI?m^}g&t %A+rOfd)b9GuI<$Qco zKS-!LzUNbAZua6{@%YZZx-shcz)}R}c?|2^YPQHq8C=z=ax6)glGh$u!^~?Uj)X4K zFBb9Ib8qaIY9`NV!{{{rcyuL#7wS1(R8MIYDK;|=!;F`*Y )9s=2_ID2QQQ#Mj z $#S}e`j=N`98!u>6jfeQ7$gt{zWDvf#~P$K{wlnQFxS%cemarng~ zm+$3+?tARXu-Ec|z8)gt)*39&C~J%0)A!ZZxu%2-Vus8Y_tAT6-nlmY1TP%OJ$ZXt z4CiCS``R=Z>sYtukr_6CmfM>xRWFBzhEy@h@9W}FHc((~`ZgZRw%(RUSiico=B$vf zyHn~VkwpAH-f)A34Mp?d0`(`<_H7N!bEw^;Xgl@Ua*`p8N2&Wo!*!xl`r0^F@%4;? z_3_GHi*WRTR?=tg-cDD|a4_n^@-qk1=xryXLrKxO)jX8BeZ}{Yz|v#c;ku%PDtVUn z77=iqehrug`az8y%wX%vTas{Fp8 ~KwCFaWF-8qj0A1--y-vB{WseNK?S2cddl|$ z*q%yXcMDr`ORWlzwYJ!f`I|Ry$z)(sL9-(9T^A=> 7|< >QTFadXL jyV$K*Ao0JtB|WGzZ7hNXqRbGhxxN?wdi zuL44*noXCtDF7eS4$V**pQmB-ks6z=iv-Fx7 z@9xKrSdwlBn zi)xN_abjb78edbuK=IPyu!*10k$qR^nBQbc<@OD8YV88RY&k&;9K8ZFhlV#d_5fJ^ z*az;4aJk5*RAWTUIx;jTfid=br`a!7sS!*0pGxVkW#rJ&D%dvqf0GKjSN?MB`23&q zt{=dCkheQ~F=!>;4e9V-zY *~+Yfyh|F%@FYsbv86R#W;9Aqo$dJ9*Myv=)el_blc&KQML)V@K1NA|NxhSTCS zfxvwukLfrTpB}ay?bKEQZhP76uSB*T>4-p%I!uh$&U^H|t;sG)Bh<`t+lyF8i&KPT zPwgN{wXPE5V(s|L|12pkHucs^egNB|5X+#-@K8 DTG)_|IH87JD0OPgwxlY`z8WgKL !%xaTg86dHy|Ha$h2&Vte2SLQ-ff|fwyvBa6 zL(SKT=7bLGM9A+V>dpEjThm6@`B&-X;WyLW1`429w~KhVeyB1>^tf$6%f`?mP&AkY zWA12b)M0|)`RmNAoObkiLeuu_G6f4Pdm%N}6{r&88k}f@Y6Z%S5f0%?@!J0UH0Zxc zOUI{}<&Y(5?mkraUQ2nClq8Gz<4Ou5k9HN;x}--bW}ME)VbNAEpKqKM)MP1dRX;oD z7-UtxE}9-?c7C>L`$b}S3>!$Tu!E^7DFwtR_znMB#;{=0#?D 3i{H=FQxJe416HK~qA^zI_f)M* z;11`+`Fi*UWGBb6=&eRhOfS9pEQQkqs}45{bpFA6==M2&A&zsiRZRDNSr5XcX63D7 zYH*X59wY$kX)QJJ>51uwYA=q2y5V~zT5O^Pi=_>77~iTE6lKo*dSckBcZUiMO|ph4 zt4sY?r$kt7Ifg qRdwx`Uw44WIfnK%JzbSj4aIl z73a(G$n)v3&0g$cD|gBkmB-2`*M+E87WRtp$^>bG`?82YjAQ<+qbHT2=g4{BHxWBw zzu7o*O?&9|p`8>xA|x7tK+tNiet&YlxG8d(^bAmDS9DBLA|g(<>o1;kO>ZIQ86LK~ z5mxF|E==K6W)#%xGnX`lH-edesRSNhJ%_~)6TrUBR+67zDl9u`i_22Ws6bKIPDz{N z^3WKg)Iogif=Zz6k4y x4a|Ne=myIV0iTfJKuZ_gf#%s(86a!Jt?& z3f_^9!Px(mIR?q&cCEQ=Lq$=uew6TJIQ=v0>-a~#Z)1(A+ yW<0r7uxcPs& zP9UCN%tg{gg$tCEWEsvAlM0xnpF8Zv4LYTDetX02e5b; V}q5nOBIh+;^iKl|c)thW~7Gsie|srkjz* F=G%lFsuK2sZ z>PJkfjUK>xvbF60)c<{yVmSrqR!!&{Y&WGFrw#y7nVOYg!!`g3ygrmV%b#0o4Vp$x zB>~@9O(G2T-;LcJ%iaf+;N!k=wJv|9+rB{~UAai0H&k>N1UN_FRK}~m#sqL&@x;cn z-Qcm8PCpmq5k^9bQ};yktI$5hSh~1mjd*R=q2%=sq%CrDwzt4tIbKOorx&d=W>KAp zO9%-Oi-kfrL!LfKGnZoZw;PYV<$S#Qf~K4g0F9^a?bC*nG||Qp*1_!T<1EpJkPP%= zt}GLmM?ueKHIB*Zqc?Y+{U(#{;3cHihrBQVd+brh3>frWLj2?jF|zYpr{w?@m6K@n zeH(WRWA#c|HP6q#du?)7K<_}ReNU(NZn{gi7hQ+C*&>4o6;9Au;6wE1kPyXD$<`rt zsZH2IT+w*9@4}IX`0uj@(xbMIcV`t@cBUFM
ValJ7k-=3i@5a*~TE zoH$0kEd1Lkz@p!M#K58H7FUqf0IJsz2o&DDe{MGlC9n#l*ey8d@84x+NGTa~pC?^H z?^#>c68HV}9+LB%9-ibEmIvb`Lxib-TA&F~?{negzW4y7CUylV{sHZ^8ajSJuUCiF z#Ru7(?>BiQ%M)+GBC;w(K3w2lNUr@$c;y{kyfEeQ>d@(vTJk^I0Xe@9{QPsF@!zQY boXQI;*v%L;AN~UFPob)$rC9p-W$^z19l#4# literal 9759 zcmb_?XIN8Pw=R3T6$JrNkzPdUO}f-rXi^2F211iwr4vfFsB}TPbT_?)NDG~aAiW6E zA)$8&JrGhj0l)J+_xbLh@7#0$WUf4Gtuf~ubBuSqV~iE~Qd^aZf{B8RjEw4qnvxzF z*_9L0b^Y}}Nxyu5MmLj&KfLr*pOIAzvTTr%age=Gdiu&ga|an5@xU=;a^J!{wxcd= z9`fgiiL2_P$qp;bv&3qk`Z#qX>!QN#ZJ~dth2Hl3Y)buP5(@i8{dT Gv6~?nJfZ{_Bn`f3|)z>oC9fijzFFsZC1i&U=_ok=Uf!^-e|WDjj06U&+zPuDImf zkOfq4BOn_bxM`$AC^gkrzd>5v-*>T-uF|9nvTt+`ddW%SNEk0WX%JEDnjSY>fhX<} zI`{+U>b9d(a?B3KDrqElJPLh$H8hrmlt*;NpC!?dgwR_Qo*DDa+=@pf5`!MOL0)b} zs(F1GeY%jl;^!x3G(7qm^N*oRzm6~quVk%v$!C2!CJ6$Jo&R``lTztYLTcEsM83Wp zYiE&md7gckE-gWu=v10!3@u}u5Rt!Wb0TTiI$0a_cqc`YHaCd0zUEixopibqcHl6> zEcUB_duj#mH+tHx>9UU% PMtU# zJ{&0|*BwTqkJ?F*o9W k9 zB2X~emSVHx(`T< Wn$>@f$}=d1zJv2#%_)9HogVJ zrw`Mm<)M)Qi-Xk${30fW^BX`p2era8e<#C5i1bNW!@P9MG&vlHN8`QPe@{H+l6+IT zlQnxBt#ZX8ekz}ywr6=aN}k!`;S51unbCJyNQSiYNJ5PwZYDX!;-->%8Jdykqx`+^ zdE~(#WMq3IeA}jt60yBqK1- ?4sgfv%MTdo`$`=qDAtD z&2*8YS=pEBCF1(2;5WiQc`i)*o5q8Pd~rEk*b&$o?e<{~lifsH8%Xu?C_5?3Sd|Ld zj5r%h3R%E5XYh#El=q}7+m;5Zz|ud;XE;xBrb+iUjz*)s>h5e6-yh-S281=8T7R=B zW{j;xRw2o63~GuTcMm 3Lq6{&jIU-?qNSNy6)G2fY^2J;ZU*`s!5wU7K4< zot$B;+$&q-68NH518+@>ioZlID8Vv~XZQ=JZuTAh$R>|i!z #*XM7C;8KY_09-hL zEeJ1Sf!|^eJ~FDC=A2)_oB(h+(nM{c(|Q67aRNDyIvh>Lrpf_Ms{sV*&^VP >Yl2lY4e z^CZM94scKjJCD&*FHr^L5>|{tzY(BwIAGlO2^Lm&2h)muEY~5)Rmh~nc_Af3QY#b0 zMFCFEgF$vk!1F`|ej3QhX(1?0Jk7GKI5}@ul49BwOuK-k`lm`*4Fb9jLBP(p%Rx@a z@c_WNHp5aMZa}<;uqfBJdVyhXw{+$zb_sL1)}TdugqR#QdLVMS6_2f5ySQ7ys7st~ zoy_d+OojNlo&5qNf3$$u6D}9;tdfMNsH5g?u)sMerbD)z=Z0!;hvJnl7d!Eh7b3KK zzTVYJj8i;|eqWPW*GeSJ!iKag