我是testCafe的新手,我需要一个脚本来测试在我的公司中正确创建了新项目(我们正在使用密钥斗篷)。但是创建项目的唯一方法是通过restApi。
我有一个testCafe脚本。我可以去我的公司网站。 在初始登录密钥库页面中,我可以输入user,pass并按Submit,一切正常。我很好,在公司网站内。
但是在这里我不知道:
1)一旦我已经登录了kaycloak页面,如何获取keycloak令牌。在Chrome浏览器中,我可以阅读它
console.log(window._keycloak.token)
2)如何创建post-RestApi-Request(使用令牌)。在我们的companyWebSite中创建一个新项目。 (我想使用RequestLogger,但老实说我不知道)
这是保存KeycloakInstance myAuth.jsx的前端代码:
import Keycloak from './keycloak';
import keycloakJson from './keycloak.json';
import { addAuthToken } from '../services/base-service';
import GraylogLogger from '../business/utils/graylog-logger';
import AppConf from "../config/app-config-service";
const auth = () => {
keycloakJson["url"] = AppConf.getKeycloakAuthUrl();
const KeycloakInstance = Keycloak || window.Keycloak;
window._keycloak = KeycloakInstance(keycloakJson);
这是我的testCafe脚本:
import mySelectorsPage from '../mySelectorsPage';
import {RequestLogger, Selector, Keycloak} from 'testcafe';
const mySelectors = new mySelectorsPage();
const myRestApiUrl= 'https://int_environment.myCompany.com/items/api/item/';
const logger = RequestLogger(
{
url: myRestApiUrl,
method: 'post',
client_id: 'mydemo_clientid',
username: 'mydemo_username',
password:'mydemo_password'
body:' ...json body for the post request to create new item..'
},
{
logRequestBody: true,
logRequestHeaders: true
}
);
fixture`fixture jint1`
.page('https://jint1.hemmersbach.com/')
.requestHooks(logger)
.beforeEach(async t => {
console.log('I am inside beforeEach');
await t
//LOGIN KEYCLOAK:
.typeText(mySelectors.keycloakInputUsername, 'GTheCat')
.typeText(mySelectors.keycloakInputPassword, 'Autotest987')
.click(mySelectors.keycloakRememberMe)
.click(mySelectors.keycloakButtonSubmit)
.wait(10)
});
test('create new item', async t => {
console.log('I am inside test');
//let myKeycloak = window._keycloak.token;
//console.log(window._keycloak.token);
await t
.setTestSpeed(0.9)
//.debug()
//.expect(logger.exits).ok()
//.expect(logger.requests[0].request.body).ok();
});
很抱歉,如果代码make的任何部分为假或没有意义。我真的很感谢任何建议。
谢谢。
致谢
答案 0 :(得分:2)
1)由于TestCafe在node.js服务器端执行测试代码,因此窗口上下文不可用。在这种情况下,请使用允许在浏览器的客户端执行脚本的ClientFunction。 2)请求记录器旨在处理页面的HTTP请求。如果您需要从测试中发送请求,请查看此答案中描述的方法:Does testcafe support testing of rest api。否则,您可以使用ClientFunction和Fetch API从客户端发送请求。