Skip to content

Commit 726f9ef

Browse files
Improve E2E tests for django-hstore-widget
Added additional waitForChanges calls to ensure async updates are handled. Enhanced test assertions for button existence and correctness, clarified selectors, and improved input simulation for the textarea. These changes make the tests more robust and reliable. Revert "Bump version to 0.0.24" This reverts commit 19bf4b8. Bump version to 0.0.24 Incremented the project version in pyproject.toml from 0.0.23 to 0.0.24.
1 parent 328f9fe commit 726f9ef

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

src/frontend/components/django-hstore-widget/test/django-hstore-widget.e2e.ts

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ describe('django-hstore-widget', () => {
44
it('renders', async () => {
55
const page = await newE2EPage();
66
await page.setContent('<django-hstore-widget></django-hstore-widget>');
7+
await page.waitForChanges();
78

89
const element = await page.find('django-hstore-widget');
910
expect(element).toHaveAttribute('hydrated');
@@ -12,6 +13,10 @@ describe('django-hstore-widget', () => {
1213
it('json and field render', async () => {
1314
const page = await newE2EPage();
1415
await page.setContent(`<django-hstore-widget json='{"hello": "world"}'></django-hstore-widget>`);
16+
await page.waitForChanges();
17+
18+
// Wait for async componentDidLoad parsing
19+
await page.waitForChanges();
1520

1621
const form_element = await page.findAll('div#json_items');
1722
expect(form_element.length).toBe(1);
@@ -20,6 +25,7 @@ describe('django-hstore-widget', () => {
2025
it('error from django backend', async () => {
2126
const page = await newE2EPage();
2227
await page.setContent(`<django-hstore-widget json='{"hello": "wor"ld"}'></django-hstore-widget>`);
28+
await page.waitForChanges();
2329

2430
const element = await page.find('div#mount_error');
2531
expect(element).not.toBeNull();
@@ -28,21 +34,25 @@ describe('django-hstore-widget', () => {
2834
it('test input textbox component', async () => {
2935
const page = await newE2EPage();
3036
await page.setContent(`<django-hstore-widget json='{"hello": "world"}'></django-hstore-widget>`);
37+
await page.waitForChanges();
3138

32-
const open_textbox_toggle = await page.find('div#textarea_open_close_toggle');
39+
const open_textbox_toggle = await page.find('div#textarea_open_close_toggle button');
40+
expect(open_textbox_toggle).not.toBeNull();
3341
await open_textbox_toggle.click();
42+
await page.waitForChanges();
3443

3544
const textbox_element = await page.find('textarea');
3645
expect(textbox_element).not.toBeNull();
37-
expect(textbox_element).not.toHaveClasses(['hidden', 'invisible']);
46+
expect(textbox_element).not.toHaveClass('hidden');
3847

3948
await page.$eval('textarea', el => {
40-
el.value = '';
49+
(el as HTMLTextAreaElement).value = '';
4150
});
51+
await textbox_element.type(`{"my":"World'"}`);
52+
await page.waitForChanges();
4253

43-
await textbox_element.type(`{"my":"World'}`);
4454
const value = await textbox_element.getProperty('value');
45-
expect(value).toBe(`{"my":"World'}`);
55+
expect(value).toBe(`{"my":"World'"}`);
4656

4757
const textbox_error = await page.find('#textbox_error');
4858
expect(textbox_error).not.toBeNull();
@@ -51,9 +61,12 @@ describe('django-hstore-widget', () => {
5161
it('test delete click', async () => {
5262
const page = await newE2EPage();
5363
await page.setContent(`<django-hstore-widget json='{"hello": "world"}'></django-hstore-widget>`);
64+
await page.waitForChanges();
5465

5566
const delete_button = await page.find('div#delete-button');
67+
expect(delete_button).not.toBeNull();
5668
await delete_button.click();
69+
await page.waitForChanges();
5770

5871
const form_element = await page.findAll('div#json_items');
5972
expect(form_element.length).toBe(0);
@@ -62,9 +75,12 @@ describe('django-hstore-widget', () => {
6275
it('test add click', async () => {
6376
const page = await newE2EPage();
6477
await page.setContent(`<django-hstore-widget json='{"hello": "world"}'></django-hstore-widget>`);
78+
await page.waitForChanges();
6579

66-
const delete_button = await page.find('button#add-button');
67-
await delete_button.click();
80+
const add_button = await page.find('button#add-button');
81+
expect(add_button).not.toBeNull();
82+
await add_button.click();
83+
await page.waitForChanges();
6884

6985
const form_element = await page.findAll('div#json_items');
7086
expect(form_element.length).toBe(2);
@@ -73,9 +89,11 @@ describe('django-hstore-widget', () => {
7389
it("test all buttons should have type='button'", async () => {
7490
const page = await newE2EPage();
7591
await page.setContent(`<django-hstore-widget json='{"hello": "world"}'></django-hstore-widget>`);
92+
await page.waitForChanges();
7693

7794
const buttons = await page.findAll('button');
78-
expect(buttons.length).not.toBeNull();
95+
expect(buttons.length).not.toBe(0);
96+
7997
for (const button of buttons) {
8098
const type = await button.getAttribute('type');
8199
expect(type).toBe('button');

0 commit comments

Comments
 (0)