Selenium tests working

fflorent 3 months ago
parent 2a2dad389f
commit 8fc0962d7f

@ -461,8 +461,6 @@
"clientId": "keycloak_clientid",
"name": "keycloak_clientid",
"description": "",
"rootUrl": "http://localhost:8484",
"adminUrl": "http://localhost:8484",
"baseUrl": "",
"surrogateAuthRequired": false,
"enabled": true,
@ -470,7 +468,7 @@
"clientAuthenticatorType": "client-secret",
"secret": "xLn3SBOgrnsUvGn95AEOMWW7fNROuqMi",
"redirectUris": [
"/oauth2/callback"
"*"
],
"webOrigins": [],
"notBefore": 0,
@ -487,7 +485,7 @@
"oidc.ciba.grant.enabled": false,
"client.secret.creation.time": "1710262687",
"backchannel.logout.session.required": "true",
"post.logout.redirect.uris": "/*",
"post.logout.redirect.uris": "*",
"oauth2.device.authorization.grant.enabled": "false",
"display.on.consent.screen": "false",
"backchannel.logout.revoke.offline.tokens": "false",

@ -1849,7 +1849,7 @@ export class FlexServer implements GristServer {
}
public resolveLoginSystem() {
return process.env.GRIST_TEST_LOGIN ? getTestLoginSystem() : (this._getLoginSystem?.() || getLoginSystem());
return isAffirmative(process.env.GRIST_TEST_LOGIN) ? getTestLoginSystem() : (this._getLoginSystem?.() || getLoginSystem());
}
// Adds endpoints that support imports and exports.

@ -1,12 +1,13 @@
import {driver} from 'mocha-webdriver';
import { assert } from 'chai';
import { driver } from 'mocha-webdriver';
import * as gu from 'test/nbrowser/gristUtils';
import {server, setupTestSuite} from 'test/nbrowser/testUtils';
import { server, setupTestSuite } from 'test/nbrowser/testUtils';
describe('LoginWithOIDC', function () {
describe('LoginWithOIDC', function() {
this.timeout(60000);
setupTestSuite();
gu.withEnvironmentSnapshot({
get 'GRIST_OIDC_SP_HOST' () { return server.getHost(); },
get 'GRIST_OIDC_SP_HOST'() { return server.getHost(); },
'GRIST_OIDC_IDP_ISSUER': 'http://localhost:8081/realms/grist',
'GRIST_OIDC_IDP_CLIENT_ID': 'keycloak_clientid',
'GRIST_OIDC_IDP_CLIENT_SECRET': 'keycloak_secret',
@ -15,33 +16,24 @@ describe('LoginWithOIDC', function () {
});
it('should login using OIDC', async () => {
console.log("HERE");
await driver.get(`${server.getHost()}/o/docs/login`);
await driver.findWait('#kc-form-login', 10_000);
await driver.find('#username').sendKeys('keycloackuser');
await driver.find('#username').sendKeys('keycloakuser');
await driver.find('#password').sendKeys('keycloakpassword');
await driver.find('#kc-login').click();
// await driver.wait(
// async () => {
// const url = await driver.getCurrentUrl();
// return url.startsWith(server.getHost());
// },
// 20_000
// );
// await driver.find('.weasel-popup-open').click();
// await gu.openAccountMenu();
// assert.equal(await driver.find('.test-usermenu-name').getText(), 'keycloackuser');
// assert.equal(await driver.find('.test-usermenu-email').getText(), 'keycloakuser@example.com');
// await driver.find('.test-dm-log-out').click();
// await driver.wait(
// async () => {
// const url = await driver.getCurrentUrl();
// return url.startsWith(`${server.getHost()}/o/docs/signed-out`);
// },
// 20_000
// );
// assert.equal(await driver.find('.test-error-header').getText(), 'Signed out');
await driver.wait(
async () => {
const url = await driver.getCurrentUrl();
return url.startsWith(server.getHost());
},
20_000
);
await gu.openAccountMenu();
assert.equal(await driver.find('.test-usermenu-name').getText(), 'Keycloak User');
assert.equal(await driver.find('.test-usermenu-email').getText(), 'keycloakuser@example.com');
await driver.find('.test-dm-log-out').click();
await driver.findContentWait('.test-error-header', /Signed out/, 20_000, 'Should be signed out');
});
});

@ -376,7 +376,7 @@ export class HomeUtil {
/**
* Waits for browser to navigate to a Grist login page.
*/
public async checkGristLoginPage(waitMs: number = 2000) {
public async checkGristLoginPage(waitMs: number = 2000) {
await this.driver.wait(this.isOnGristLoginPage.bind(this), waitMs);
}

@ -149,7 +149,10 @@ export class TestServerMerged extends EventEmitter implements IMochaServer {
delete env.DOC_WORKER_COUNT;
}
this._server = spawn('node', [cmd], {
env,
env: {
...env,
...(process.env.SERVER_NODE_OPTIONS ? {NODE_OPTIONS: process.env.SERVER_NODE_OPTIONS} : {})
},
stdio: quiet ? 'ignore' : ['inherit', serverLog, serverLog],
});
this._exitPromise = exitPromise(this._server);

Loading…
Cancel
Save