Skip to content

Commit 02dc4c7

Browse files
visp-odoochdh-odoo
authored andcommitted
[FIX] website: adapt tour website_form_editor_tour
1 parent edff5d7 commit 02dc4c7

File tree

4 files changed

+105
-100
lines changed

4 files changed

+105
-100
lines changed

addons/website/static/src/builder/plugins/form/form_option.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@
306306
<!-- checkbox, select, radio possible values -->
307307
<BuilderSelectItem t-foreach="state.conditionValueList" t-as="record" t-key="record.value"
308308
dataAttributeActionValue="record.value"
309-
t-out="record.textContent"
309+
t-out="record.display_name"
310310
/>
311311
</BuilderSelect>
312312
<BuilderSelect t-if="state.conditionValueList and domStateDependency.isRecordField"
@@ -319,7 +319,7 @@
319319
/>
320320
</BuilderSelect>
321321
<BuilderTextInput t-if="isTextConditionValueVisible"
322-
id="'hidden_condition_additional_text'" dataAttributeAction="'visibilityCondition'"
322+
attributeAction="'visibilityCondition'" id="'hidden_condition_additional_text'" dataAttributeAction="'visibilityCondition'"
323323
/>
324324
<BuilderDateTimePicker t-if="domStateDependency.isFormDateTime and !['set', '!set'].includes(domState.elDataset.visibilityComparator)"
325325
id="'hidden_condition_additional_datetime'" dataAttributeAction="'visibilityCondition'" type="'datetime'"

addons/website/static/src/builder/plugins/form/form_option_plugin.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -942,6 +942,7 @@ export class FormOptionPlugin extends Plugin {
942942
conditionValueList.push({
943943
value: el.value,
944944
textContent: el.value,
945+
display_name: el.labels[0].textContent
945946
});
946947
}
947948
if (!inputContainerEl.dataset.visibilityCondition) {

addons/website/static/tests/tours/website_form_editor.js

Lines changed: 102 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -51,86 +51,73 @@ const selectFieldByLabel = (label) => {
5151
run: "click",
5252
}];
5353
};
54-
const selectButtonByText = function (text) {
55-
return [
56-
{
57-
content: "Open the select",
58-
trigger:
59-
"div[data-container-title='Field'] div[data-label='Visibility'] button.btn-primary",
60-
run: "click",
61-
},
62-
{
63-
content: "Click on the option",
64-
trigger: `.o_popover div[role="menuitem"]:contains("${text}")`,
65-
run: "click",
66-
},
67-
];
54+
const selectButtonByText = function (text, dropdownContent) {
55+
return [{
56+
content: "Open the select",
57+
trigger: `.o_customize_tab button:contains("${text}")`,
58+
run: "click",
59+
},
60+
{
61+
content: "Click on the option",
62+
trigger: `.o_popover div.dropdown-item:contains("${dropdownContent}")`,
63+
run: "click",
64+
}];
6865
};
69-
const selectButtonByData = function (data) {
70-
return [
71-
{
72-
content: "Open the select",
73-
trigger: "div[data-label='Type'] button.btn-primary",
74-
run: "click",
75-
},
76-
{
77-
content: "Click on the option",
78-
trigger: `.o_popover [${data}]`,
79-
run: "click",
80-
},
81-
];
66+
const selectButtonByData = function (text, data, name) {
67+
return [{
68+
content: "Open the select",
69+
trigger: `.o_customize_tab button:contains('${text}')`,
70+
run: "click",
71+
}, {
72+
content: "Click on the option",
73+
trigger: `.o_popover div[${data}][data-action-value="${name}"]`,
74+
run: "click",
75+
}];
8276
};
83-
const addField = function (
84-
name,
85-
type,
86-
label,
87-
required,
88-
isCustom,
89-
display = { visibility: VISIBLE, condition: "" }
90-
) {
91-
const data = isCustom ? `data-action-value="${name}"` : `data-existing-field="${name}"`;
77+
const addField = function (name, type, label, required, isCustom,
78+
display = {visibility: VISIBLE, condition: ""}) {
79+
const data = isCustom ? "data-action-id='customField'" : "data-action-id='existingField'";
9280
const ret = [
93-
{
94-
trigger: ":iframe .s_website_form_field",
95-
},
96-
{
97-
content: "Select form",
98-
trigger: ":iframe section.s_website_form",
99-
run: "click",
100-
},
101-
{
102-
content: "Add field",
103-
trigger: "[data-container-title=Form] button:contains('+ Field')",
104-
run: "click",
105-
},
106-
...selectButtonByData(data),
107-
{
108-
content: "Wait for field to load",
109-
trigger: `:iframe .s_website_form_field[data-type="${name}"],:iframe .s_website_form_input[name="${name}"]`, //custom or existing field
110-
},
111-
...selectButtonByText(display.visibility),
112-
];
113-
let testText = ":iframe .s_website_form_field";
81+
{
82+
trigger: ":iframe .s_website_form_field",
83+
},
84+
{
85+
content: "Select form",
86+
trigger: ':iframe section.s_website_form',
87+
run: "click",
88+
}, {
89+
content: "Add field",
90+
trigger: ".o_customize_tab button[title='Add a new field at the end']",
91+
run: "click",
92+
},
93+
...selectButtonByData("Text", data, name),
94+
{
95+
content: "Wait for field to load",
96+
trigger: `:iframe .s_website_form_field[data-type="${name}"],:iframe .s_website_form_input[name="${name}"]`, //custom or existing field
97+
},
98+
...selectButtonByText("Always Visible", display.visibility),
99+
];
100+
let testText = ':iframe .s_website_form_field';
114101
if (display.condition) {
115102
ret.push({
116103
content: "Set the visibility condition",
117-
trigger: 'we-input[data-attribute-name="visibilityCondition"] input',
104+
trigger: ".o_customize_tab div[data-attribute-action='visibilityCondition'] input",
118105
run: `edit ${display.condition} && press Tab`,
119106
});
120107
}
121108
if (required) {
122109
testText += ".s_website_form_required";
123110
ret.push({
124111
content: "Mark the field as required",
125-
trigger: "div[data-action-id='toggleRequired'] .form-switch input",
112+
trigger: ".o_customize_tab div[data-action-id='toggleRequired'] input[type='checkbox']",
126113
run: "click",
127114
});
128115
}
129116
if (label) {
130117
testText += `:has(label:contains(${label}))`;
131118
ret.push({
132119
content: "Change the label text",
133-
trigger: "div[data-action-id='setLabelText'] input",
120+
trigger: ".o_customize_tab div[data-action-id='setLabelText'] input",
134121
run: `edit ${label} && press Tab`,
135122
});
136123
}
@@ -159,38 +146,34 @@ registerWebsitePreviewTour("website_form_editor_tour", {
159146
edition: true,
160147
}, () => [
161148
// Drop a form builder snippet and configure it
162-
{
163-
content: "Drop the form snippet",
164-
trigger: '#oe_snippets .oe_snippet .oe_snippet_thumbnail[data-snippet=s_website_form]',
165-
run: "drag_and_drop :iframe #wrap",
166-
},
149+
...insertSnippet({id: "s_title_form", name: "Contact & Forms", groupName: "Contact & Forms"}),
167150
{
168151
trigger: ":iframe .s_website_form_field",
169152
},
170153
{
171154
content: "Select form by clicking on an input field",
172-
trigger: ':iframe section.s_website_form input',
155+
trigger: ":iframe .s_website_form_field .s_website_form_input",
173156
run: "click",
174157
}, {
175158
content: "Verify that the form editor appeared",
176-
trigger: '.o_we_customize_panel .snippet-option-WebsiteFormEditor',
159+
trigger: ".o_customize_tab div[data-container-title='Form']",
177160
},
178161
goBackToBlocks(),
179162
{
180163
trigger: ":iframe .s_website_form_field",
181164
},
182165
{
183166
content: "Select form by clicking on a text area",
184-
trigger: ':iframe section.s_website_form textarea',
167+
trigger: ":iframe .s_website_form_field textarea.s_website_form_input",
185168
run: "click",
186169
},
187170
{
188171
content: "Verify that the form editor appeared",
189-
trigger: '.o_we_customize_panel .snippet-option-WebsiteFormEditor',
172+
trigger: ".o_customize_tab div[data-container-title='Form']",
190173
},
191174
{
192175
content: "Rename and leave the field label",
193-
trigger: 'we-input[data-set-label-text] input',
176+
trigger: '.o_customize_tab div[data-action-id="setLabelText"] input',
194177
run: "edit Renamed && click body",
195178
},
196179
goBackToBlocks(),
@@ -202,7 +185,7 @@ registerWebsitePreviewTour("website_form_editor_tour", {
202185
trigger: ':iframe section.s_website_form',
203186
run: "click",
204187
},
205-
...selectButtonByText('Send an E-mail'),
188+
...selectButtonByText('Send an E-mail', 'Send an E-mail'),
206189
{
207190
content: "Form has a model name",
208191
trigger: ':iframe section.s_website_form form[data-model_name="mail.mail"]',
@@ -213,46 +196,64 @@ registerWebsitePreviewTour("website_form_editor_tour", {
213196
run: "click",
214197
}, {
215198
content: 'Change the label position of the phone field',
216-
trigger: 'we-button[data-select-label-position="right"]',
199+
trigger: ".o_customize_tab div[data-label='Position'] button[data-action-value='right']",
217200
run: "click",
218201
},
219202
...addCustomField("char", "text", "Conditional Visibility Check 1", false),
220203
...addCustomField("char", "text", "Conditional Visibility Check 2", false),
221-
...selectButtonByData("data-set-visibility='conditional'"),
222-
...selectButtonByData("data-set-visibility-dependency='Conditional Visibility Check 1'"),
204+
...selectButtonByData("Always Visible", "data-action-id='setVisibility'", "conditional"),
205+
...selectButtonByData(
206+
"Your Name",
207+
"data-action-id='setVisibilityDependency'",
208+
"Conditional Visibility Check 1"
209+
),
223210
...addCustomField("char", "text", "Conditional Visibility Check 2", false),
224211
...selectFieldByLabel("Conditional Visibility Check 1"),
225-
...selectButtonByData("data-set-visibility='conditional'"),
212+
...selectButtonByData("Always Visible", "data-action-id='setVisibility'", "conditional"),
213+
{
214+
content: "Open list of the visibility selector of Conditional Visibility Check 1",
215+
trigger: ".o_customize_tab button:contains('Your Name')",
216+
run: "click",
217+
},
226218
{
227219
content: "Check that 'Conditional Visibility Check 2' is not in the list of the visibility selector of Conditional Visibility Check 1",
228-
trigger: "we-select[data-name='hidden_condition_opt']:not(:has(we-button[data-set-visibility-dependency='Conditional Visibility Check 2']))",
220+
trigger: ".o_popover div:not(:has([data-action-value='Conditional Visibility Check 2']))",
229221
},
230222
...addCustomField("char", "text", "Conditional Visibility Check 3", false),
231223
...addCustomField("char", "text", "Conditional Visibility Check 4", false),
232-
...selectButtonByData("data-set-visibility='conditional'"),
233-
...selectButtonByData("data-set-visibility-dependency='Conditional Visibility Check 3'"),
224+
...selectButtonByData("Always Visible", "data-action-id='setVisibility'", "conditional"),
225+
...selectButtonByData(
226+
"Your Name",
227+
"data-action-id='setVisibilityDependency'",
228+
"Conditional Visibility Check 3"
229+
),
234230
{
235231
content: "Change the label of 'Conditional Visibility Check 4' and change it to 'Conditional Visibility Check 3'",
236-
trigger: 'we-input[data-set-label-text] input',
232+
trigger: ".o_customize_tab div[data-action-id='setLabelText'] input",
237233
// TODO: remove && click body
238234
run: "edit Conditional Visibility Check 3 && click body",
239235
},
240236
{
241237
content: "Check that the conditional visibility of the renamed field is removed",
242-
trigger: "we-customizeblock-option.snippet-option-WebsiteFieldEditor we-select:contains('Visibility'):has(we-toggler:contains('Always Visible'))",
238+
trigger: ".o_customize_tab div[data-container-title='Field'] button:contains('None')",
243239
},
244240
...addCustomField("char", "text", "Conditional Visibility Check 5", false),
245241
...addCustomField("char", "text", "Conditional Visibility Check 6", false),
246-
...selectButtonByData("data-set-visibility='conditional'"),
242+
...selectButtonByData("Always Visible", "data-action-id='setVisibility'", "conditional"),
247243
{
248244
content: "Change the label of 'Conditional Visibility Check 6' and change it to 'Conditional Visibility Check 5'",
249-
trigger: 'we-input[data-set-label-text] input',
245+
trigger: ".o_customize_tab div[data-action-id='setLabelText'] input",
250246
// TODO: remove && click body
251247
run: "edit Conditional Visibility Check 5 && click body",
252248
},
249+
{
250+
content: "Open list of the visibility selector of Conditional Visibility Check 1",
251+
trigger: ".o_customize_tab button:contains('Your Name')",
252+
run: "click",
253+
},
253254
{
254255
content: "Check that 'Conditional Visibility Check 5' is not in the list of the renamed field",
255-
trigger: "we-customizeblock-option.snippet-option-WebsiteFieldEditor we-select[data-name='hidden_condition_opt']:not(:has(we-button:contains('Conditional Visibility Check 5')))",
256+
trigger: ".o_popover div:not(:has([data-action-value='Conditional Visibility Check 5']))",
256257
},
257258
...addExistingField('email_cc', 'text', 'Test conditional visibility', false, {visibility: CONDITIONALVISIBILITY, condition: 'odoo'}),
258259
{
@@ -263,18 +264,22 @@ registerWebsitePreviewTour("website_form_editor_tour", {
263264
...addCustomField("char", "text", "dependent", false, {visibility: CONDITIONALVISIBILITY}),
264265
...addCustomField("selection", "radio", "dependency", false),
265266
...selectFieldByLabel("dependent"),
266-
...selectButtonByData('data-set-visibility-dependency="dependency"'),
267+
...selectButtonByData(
268+
"Your Name",
269+
"data-action-id='setVisibilityDependency'",
270+
"dependency"
271+
),
267272
...selectFieldByLabel("dependency"),
268-
...selectButtonByData('data-custom-field="char"'),
273+
...selectButtonByData("Radio Buttons", "data-action-id='customField'", "char"),
269274
...selectFieldByLabel("dependent"),
270275
{
271276
content: "Open the select",
272-
trigger: 'we-select:has(we-button[data-set-visibility="visible"]) we-toggler',
277+
trigger: ".o_customize_tab button:contains('Always Visible')",
273278
run: "click",
274279
},
275280
{
276281
content: "Check that the field no longer has conditional visibility",
277-
trigger: "we-select we-button[data-set-visibility='visible'].active",
282+
trigger: ".o_popover div[data-action-value='visible'].active",
278283
},
279284

280285
...addExistingField('date', 'text', 'Test Date', true),
@@ -288,25 +293,25 @@ registerWebsitePreviewTour("website_form_editor_tour", {
288293
...addCustomField('one2many', 'checkbox', 'Products', true),
289294
{
290295
content: "Change Option 1 label",
291-
trigger: 'we-list table input:eq(0)',
296+
trigger: ".o_we_table_wrapper table input[name='display_name']:eq(0)",
292297
run: "edit Iphone && press Tab",
293298
}, {
294299
content: "Change Option 2 label",
295-
trigger: 'we-list table input:eq(1)',
300+
trigger: ".o_we_table_wrapper table input[name='display_name']:eq(1)",
296301
run: "edit Galaxy S && press Tab",
297302
},{
298303
content: "Change first Option 3 label",
299-
trigger: 'we-list table input:eq(2)',
304+
trigger: ".o_we_table_wrapper table input[name='display_name']:eq(2)",
300305
run: "edit Xperia && press Tab",
301306
},
302307
{
303308
content: "Click on Add new Checkbox",
304-
trigger: 'we-list we-button.o_we_list_add_optional',
309+
trigger: "button.builder_list_add_item",
305310
run: "click",
306311
},
307312
{
308313
content: "Change added Option label",
309-
trigger: 'we-list table input:eq(3)',
314+
trigger: ".o_we_table_wrapper table input[name='display_name']:eq(3)",
310315
run: "edit Wiko Stairway && press Tab",
311316
}, {
312317
content: "Check the resulting field",
@@ -317,7 +322,7 @@ registerWebsitePreviewTour("website_form_editor_tour", {
317322
":has(.checkbox:has(label:contains('Xperia')):has(input[type='checkbox'][required]))" +
318323
":has(.checkbox:has(label:contains('Wiko Stairway')):has(input[type='checkbox'][required]))",
319324
},
320-
...selectButtonByData('data-multi-checkbox-display="vertical"'),
325+
...selectButtonByData("Horizontal", "data-action-id='multiCheckboxDisplay'", "vertical"),
321326
{
322327
content: "Check the resulting field",
323328
trigger: ":iframe .s_website_form_field.s_website_form_custom.s_website_form_required" +
@@ -328,10 +333,10 @@ registerWebsitePreviewTour("website_form_editor_tour", {
328333
":has(.checkbox:has(label:contains('Wiko Stairway')):has(input[type='checkbox'][required]))",
329334
},
330335
// Check conditional visibility for the relational fields
331-
...selectButtonByData("data-set-visibility='conditional'"),
332-
...selectButtonByData("data-set-visibility-dependency='recipient_ids'"),
333-
...selectButtonByText("Is not equal to"),
334-
...selectButtonByText("Mitchell Admin"),
336+
...selectButtonByData("Always Visible", "data-action-id='setVisibility'", "conditional"),
337+
...selectButtonByData("Your Name", "data-action-id='setVisibilityDependency'", "recipient_ids"),
338+
...selectButtonByText("Is equal to", "Is not equal to"),
339+
...selectButtonByText("Joel Willis", "Mitchell Admin"),
335340
...clickOnSave(),
336341
{
337342
content: "Check 'products' field is visible.",

addons/website/tests/test_website_form_editor.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ def setUpClass(cls):
2121
'phone': "+1 555-555-5555",
2222
})
2323

24-
@unittest.skip
2524
def test_tour(self):
2625
self.start_tour(self.env['website'].get_client_action_url('/'), 'website_form_editor_tour', login='admin', timeout=120)
2726
self.start_tour('/', 'website_form_editor_tour_submit')

0 commit comments

Comments
 (0)