- Copy all OWL frontend assets (JS/CSS/XML/fonts/images) into frontend/ directory (2925 files, 43MB) — no more runtime reads from Python Odoo - Replace OdooAddonsPath config with FrontendDir pointing to local frontend/ - Rewire bundle.go, static.go, templates.go, webclient.go to read from frontend/ instead of external Python Odoo addons directory - Auto-detect frontend/ and build/ dirs relative to binary in main.go - Delete obsolete Python helper scripts (tools/*.py) The Go server is now fully self-contained: single binary + frontend/ folder. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
77 lines
2.4 KiB
JavaScript
77 lines
2.4 KiB
JavaScript
import { inputFiles } from "@web/../tests/utils";
|
|
import { registry } from "@web/core/registry";
|
|
|
|
registry.category("web_tour.tours").add("test_basic_purchase_flow_with_minimal_access_rights", {
|
|
steps: () => [
|
|
{
|
|
trigger: ".o_menuitem[href='/odoo/purchase']",
|
|
run: "click",
|
|
},
|
|
{
|
|
content: "Check that at least one RFQ is present in the view",
|
|
trigger: ".o_purchase_dashboard_list_view .o_data_row",
|
|
},
|
|
{
|
|
trigger: ".o_list_button_add",
|
|
run: "click",
|
|
},
|
|
{
|
|
trigger: ".o_input[id=partner_id_0]",
|
|
run: "edit partner_a",
|
|
},
|
|
{
|
|
trigger: ".dropdown-item:contains(partner_a)",
|
|
run: "click",
|
|
},
|
|
{
|
|
trigger: ".o_field_x2many_list_row_add > a",
|
|
run: "click",
|
|
},
|
|
{
|
|
trigger: ".o_data_row .o_input",
|
|
run: "edit Test Product",
|
|
},
|
|
{
|
|
trigger: ".dropdown-item:contains('Test Product')",
|
|
run: "click",
|
|
},
|
|
{
|
|
content: "Wait for the tax to be set by the onchange",
|
|
trigger: ".o_field_many2many_tags[name=tax_ids] .o_tag",
|
|
},
|
|
{
|
|
trigger: ".o_data_cell[name=price_unit]",
|
|
run: "click",
|
|
},
|
|
{
|
|
trigger: ".o_data_cell[name=price_unit] .o_input",
|
|
run: "edit 3",
|
|
},
|
|
{
|
|
trigger: "button[name=button_confirm]",
|
|
run: "click",
|
|
},
|
|
{
|
|
trigger: ".o_statusbar_status .o_arrow_button_current:contains(Purchase Order)",
|
|
},
|
|
{
|
|
content: "Upload the vendor bill",
|
|
trigger: ".o_widget_purchase_file_uploader",
|
|
run: async () => {
|
|
const testFile = new File(["Vendor, Bill"], "my_vendor_bill.png", {
|
|
type: "image/*",
|
|
});
|
|
await inputFiles(".o_widget_purchase_file_uploader input", [testFile]);
|
|
},
|
|
},
|
|
{
|
|
content: "Check that we are in the invoice form view",
|
|
trigger: ".o_statusbar_status:contains(Posted) .o_arrow_button_current:contains(Draft)",
|
|
},
|
|
{
|
|
content: "Check that the invoice is linked to the sale order",
|
|
trigger: "button[name=action_view_source_purchase_orders]",
|
|
},
|
|
],
|
|
});
|