commit 8fd86e0a9adcfffb2b810d0a2974d30feeb5afb9
parent 6eaeb20812144000f10631d26c39c6f5feee0ca0
Author: Sebastian <sebasjm@taler-systems.com>
Date: Wed, 11 Feb 2026 18:50:49 -0300
better name for the test
Diffstat:
5 files changed, 83 insertions(+), 119 deletions(-)
diff --git a/packages/taler-harness/src/harness/environments.ts b/packages/taler-harness/src/harness/environments.ts
@@ -520,7 +520,10 @@ export function createBrowser(t: GlobalTestState) {
case "chrome": {
const chromeOpts = new Chrome.Options();
+ // https://peter.sh/experiments/chromium-command-line-switches
chromeOpts.addArguments("--no-sandbox", "-headless");
+ // chromeOpts.addArguments("--no-sandbox", "--headless","--no-startup-window");
+ chromeOpts.addArguments(`--incognito`);
const driver = new Builder()
.forBrowser(Browser.CHROME)
diff --git a/packages/taler-harness/src/harness/harness.ts b/packages/taler-harness/src/harness/harness.ts
@@ -2029,14 +2029,11 @@ export class BrowserService {
}
async start(): Promise<void> {
+ const profileDir = path.join(this.globalState.testDir, "browser-profile");
+ fs.mkdirSync(profileDir);
+
switch (this.type) {
case "firefox": {
- const profileDir = path.join(
- this.globalState.testDir,
- "browser-profile",
- );
- fs.mkdirSync(profileDir);
-
this.driver = this.globalState.spawnService(
"geckodriver",
[
@@ -2050,9 +2047,11 @@ export class BrowserService {
profileDir,
],
`web-browser`,
- process.env.BROWSER_PATH ? {
- PATH : process.env.BROWSER_PATH
- } : undefined
+ process.env.BROWSER_PATH
+ ? {
+ PATH: process.env.BROWSER_PATH,
+ }
+ : undefined,
);
break;
}
@@ -2067,9 +2066,11 @@ export class BrowserService {
`--log-path=${this.globalState.testDir}/browser.log`,
],
`web-browser`,
- process.env.BROWSER_PATH ? {
- PATH : process.env.BROWSER_PATH
- } : undefined
+ process.env.BROWSER_PATH
+ ? {
+ PATH: process.env.BROWSER_PATH,
+ }
+ : undefined,
);
break;
}
diff --git a/packages/taler-harness/src/integrationtests/testrunner.ts b/packages/taler-harness/src/integrationtests/testrunner.ts
@@ -217,7 +217,7 @@ import { runWithdrawalIdempotentTest } from "./test-withdrawal-idempotent.js";
import { runWithdrawalManualTest } from "./test-withdrawal-manual.js";
import { runWithdrawalPrepareTest } from "./test-withdrawal-prepare.js";
import { runMerchantBankBadWireTargetTest } from "./test-merchant-bank-bad-wire-target.js";
-import { runWebMerchantSelfProvisionActivationTest } from "./web/test-merchant-self-provision-activation.js";
+import { runWebMerchantLoginTest } from "./web/test-merchant-login.js";
/**
* Test runner.
@@ -336,7 +336,7 @@ const allTests: TestMainFunction[] = [
runExchangeMasterPubChangeTest,
runMerchantCategoriesTest,
runMerchantSelfProvisionActivationTest,
- runWebMerchantSelfProvisionActivationTest,
+ runWebMerchantLoginTest,
runMerchantSelfProvisionActivationAndLoginTest,
runMerchantSelfProvisionForgotPasswordTest,
runMerchantSelfProvisionInactiveAccountPermissionsTest,
diff --git a/packages/taler-harness/src/integrationtests/web/test-merchant-login.ts b/packages/taler-harness/src/integrationtests/web/test-merchant-login.ts
@@ -0,0 +1,65 @@
+/*
+ This file is part of GNU Taler
+ (C) 2021 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+/**
+ * Imports.
+ */
+import { createSimpleTestkudosEnvironmentV3 } from "harness/environments.js";
+import { By } from "selenium-webdriver";
+import {
+ GlobalTestState,
+ MERCHANT_DEFAULT_AUTH,
+} from "../../harness/harness.js";
+
+/**
+ * Do basic checks on instance management and authentication.
+ */
+export async function runWebMerchantLoginTest(t: GlobalTestState) {
+ // Set up test environment
+
+ const { merchant, createBrowser } =
+ await createSimpleTestkudosEnvironmentV3(t);
+
+ const browser = await createBrowser({});
+
+ await browser.get(merchant.makeInstanceBaseUrl());
+
+ const title = await browser.getTitle();
+
+ t.assertDeepEqual("GNU Taler Merchant Backoffice", title);
+
+ await browser.manage().setTimeouts({ implicit: 2000 });
+
+ const form = await browser.findElement(By.css("form"));
+ const username = await form.findElement(By.css("input[name=username]"));
+ const password = await form.findElement(By.css("input[name=token]"));
+ const submit = await form.findElement(By.css("button[type=submit]"));
+ await browser.sleep(100);
+
+ const inferedUsername = await username.getAttribute("value")
+ t.assertTrue(inferedUsername === "admin");
+ await password.sendKeys(MERCHANT_DEFAULT_AUTH.password);
+ await submit.click();
+
+ await browser.sleep(100);
+
+ const nousername = await browser.findElement(By.css("aside"));
+ t.assertTrue(nousername !== undefined);
+
+ await browser.quit();
+}
+
+runWebMerchantLoginTest.suites = ["web", "merchant"];
diff --git a/packages/taler-harness/src/integrationtests/web/test-merchant-self-provision-activation.ts b/packages/taler-harness/src/integrationtests/web/test-merchant-self-provision-activation.ts
@@ -1,105 +0,0 @@
-/*
- This file is part of GNU Taler
- (C) 2021 Taler Systems S.A.
-
- GNU Taler is free software; you can redistribute it and/or modify it under the
- terms of the GNU General Public License as published by the Free Software
- Foundation; either version 3, or (at your option) any later version.
-
- GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along with
- GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
- */
-
-/**
- * Imports.
- */
-import { createSimpleTestkudosEnvironmentV3 } from "harness/environments.js";
-import { startTanHelper } from "harness/tan-helper.js";
-import { randomBytes } from "node:crypto";
-import { chmodSync, writeFileSync } from "node:fs";
-import { By } from "selenium-webdriver";
-import { GlobalTestState, MERCHANT_DEFAULT_AUTH } from "../../harness/harness.js";
-
-/**
- * Do basic checks on instance management and authentication.
- */
-export async function runWebMerchantSelfProvisionActivationTest(
- t: GlobalTestState,
-) {
- // Set up test environment
-
- // FIXME: maybe merchant can use commands?
- const RND = randomBytes(10).toString("hex");
- const socketFile = `${t.testDir}/tan-helper-${RND}.socket`;
- const helperScript = `${t.testDir}/harness-helper-${RND}.sh`;
- writeFileSync(
- helperScript,
- `#!/bin/bash
-taler-harness run-helper --socket ${socketFile} -- $@
-`,
- );
- chmodSync(helperScript, "777");
-
- const {
- walletClient,
- bankClient,
- exchange,
- merchant,
- bank,
- merchantAdminAccessToken,
- createBrowser
- } = await createSimpleTestkudosEnvironmentV3(t, undefined, {
- additionalMerchantConfig(m) {
- m.modifyConfig(async (cfg) => {
- cfg.setString("merchant", "ENABLE_SELF_PROVISIONING", "yes");
- cfg.setString("merchant", "HELPER_SMS", helperScript);
- cfg.setString("merchant", "HELPER_EMAIL", helperScript);
- cfg.setString("merchant", "MANDATORY_TAN_CHANNELS", "email sms");
- });
- },
- });
- const helper = await startTanHelper({ socketFile });
-
- const browser = await createBrowser({})
-
- await browser.get(merchant.makeInstanceBaseUrl());
-
- const title = await browser.getTitle();
-
- t.assertDeepEqual("GNU Taler Merchant Backoffice", title);
-
- await browser.manage().setTimeouts({ implicit: 2000, });
-
- // const noAsideWhenLogout = await browser.findElement(By.css('aside'))
- // t.assertDeepEqual(noAsideWhenLogout, undefined)
-
- // browser.manage()
- const form = await browser.findElement(By.css('form'))
- const username = await form.findElement(By.css("input[name=username]"));
- const password = await form.findElement(By.css("input[name=token]"));
- const submit = await form.findElement(By.css('button[type=submit]'));
-
- await username.sendKeys("admin");
- await password.sendKeys(MERCHANT_DEFAULT_AUTH.password);
- await submit.click();
-
- await browser.sleep(100)
-
- const nousername = await browser.findElement(By.css("aside"));
- t.assertTrue(nousername !== undefined)
-
- await browser.quit();
-
-
- helper.stop();
-}
-
-runWebMerchantSelfProvisionActivationTest.suites = [
- "web",
- "merchant",
- "self-provision",
-];