admin管理员组文章数量:1429570
I have a code that needs to loop the json file. However it throws this error:
aPIRequestContext.get: Request context disposed.
And I have no idea why. Here's how I implemented it:
When I try to put the block of code outside the base.loopJsonData, it works... but not when inside. I tried to print the json details and I'm getting an output but not when I'm using request.get()
Here's the loopJsonData:
public loopJsonData(json, data, callback) {
const inputData = this.loadJSONData(json, data);
inputData.forEach((val, i) => {
((item, index) => {
callback(item, index, inputData);
})(val, i);
});
}
Here's the loadJSONData:
public loadJSONData(path: string, testData: string) {
let jsonPath;
this.contentPath = join(process.cwd(), path);
this.contentPath = normalizer.normalize(this.contentPath);
this.contentPath = JSON.parse(fs.readFileSync(this.contentPath, "utf8"));
jsonPath = this.contentPath;
return jsonPath[testData];
}
I have a code that needs to loop the json file. However it throws this error:
aPIRequestContext.get: Request context disposed.
And I have no idea why. Here's how I implemented it:
When I try to put the block of code outside the base.loopJsonData, it works... but not when inside. I tried to print the json details and I'm getting an output but not when I'm using request.get()
Here's the loopJsonData:
public loopJsonData(json, data, callback) {
const inputData = this.loadJSONData(json, data);
inputData.forEach((val, i) => {
((item, index) => {
callback(item, index, inputData);
})(val, i);
});
}
Here's the loadJSONData:
public loadJSONData(path: string, testData: string) {
let jsonPath;
this.contentPath = join(process.cwd(), path);
this.contentPath = normalizer.normalize(this.contentPath);
this.contentPath = JSON.parse(fs.readFileSync(this.contentPath, "utf8"));
jsonPath = this.contentPath;
return jsonPath[testData];
}
Share
Improve this question
asked Dec 31, 2021 at 3:26
ohloriohlori
3102 gold badges10 silver badges23 bronze badges
1 Answer
Reset to default 2loopJsonData
takes async function but doesn't await
it inside (just calls it synchronously for each data item inputData.forEach((val, i) => {
). With such approach inner request.get()
will run after the test method finishes and it will race with tear down logic which disposes the request
(essentially you call request.get()
after request.dispose()
has been called).
To fix this you should ensure that all async callbacks are waited for, something like this:
async loopJsonData(json, data, callback) {
const inputData = this.loadJSONData(json, data);
const promises = [];
inputData.forEach((val, i) => {
promises.push(callback(val, i, inputData));
});
await Promise.all(promises);
}
本文标签: javascriptPlaywright throws aPIRequestContextget Request context disposedStack Overflow
版权声明:本文标题:javascript - Playwright throws aPIRequestContext.get: Request context disposed - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745440984a2658447.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论