我正在尝试在我的存储库上创建一个复合操作,如下所示:
\n.github\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 actions\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup-composite.yml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 workflows\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 composite_test.yml\nRun Code Online (Sandbox Code Playgroud)\n文件的内容是最低限度的
\n# setup-composite.yml\n\nname: setup-env\n\nruns:\n using: \'composite\'\n steps:\n - uses: actions/setup-python@v4\n with:\n python-version: \'3.9\'\n\n - name: run dependencies\n shell: bash\n run: |\n pip install -r requirements.txt\n\nRun Code Online (Sandbox Code Playgroud)\n然后我尝试使用引用复合工作流程
\n# composite_test.yml\n\nname: Composite Test\non:\n pull_request:\n push:\n branches: [main]\n workflow_dispatch:\n\njobs:\n setup:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v3\n\n - name: composite\n uses: ./.github/actions/setup-composite\nRun Code Online (Sandbox Code Playgroud)\nrequirements.txt 的内容只是几个用于测试目的的包。
\n但是当这个工作流程运行时我得到Error: Can\'t find \'action.yml\', \'action.yaml\' or \'Dockerfile\' under \'/home/runner/work/_actions/{profile}/{repo}/main/.github/actions/setup-composite\'. Did you forget to run actions/checkout …
我正在编写一个 Chrome 扩展弹出窗口来登录我的服务器。扩展有一个基本形式username,password以及submit按钮。
<form>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp"
placeholder="Enter email">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
</div>
<button type="submit" class="btn btn-primary btn-sm" id="loginButton">Log In</button>
</form>
Run Code Online (Sandbox Code Playgroud)
我使用 Insomnia REST 客户端测试了我的服务器的响应,如下所示:
URL:https://myserver.com/login
标题:Content-Type: application/x-www-form-urlencoded
表单 URL 编码:email: email@domain.com & password: password
在我的 Chrome 扩展程序中,我编写了一个signin.js脚本来处理按钮单击事件并将请求发送到我的服务器。
// hardcoded for simplicity of this example
const email = email@domain.com
const pwd = password
var button …Run Code Online (Sandbox Code Playgroud) 我的团队使用功能分支,这些分支在某个时候从主分支中分支出来
# make sure the local version of master is up to date
git checkout master
git fetch origin
git reset --hard origin/master
# create a new branch
git checkout -b feature/name
Run Code Online (Sandbox Code Playgroud)
当我们开发新功能时,这些功能分支可以存在几个月,但是当我们解决错误或合并其他功能分支时,master 也会在这段时间内发生变化。
我们主要遵循feature-branch-workflow中描述的流程。Github 也有关于-protected-branches 的良好文档。
现在的问题是团队决定保护功能分支(包括管理员),在同步时给我们留下了一些master选择feature/name:
暂时删除分支保护规则,以便我们可以feature/name更新master
优点:更简单的选择(通常只需使用 Github UI 来同步分支)。善于解决小矛盾—— git checkout feature/name;git merge master; 解决冲突、承诺并git push
缺点:有人推送到不受保护的分支的风险(即使是暂时的);合并冲突错误和未经同行评审的代码
创建一个 PR 到功能分支,其中包含 master 的更改
优点:所有代码都会经过审查
缺点:耗时;PR 通常会变得很大
两者的混合取决于要解决的冲突
优点:对于小冲突(例如变更日志中的冲突)使用方法 1,对于较大冲突使用方法 2
缺点:小冲突或大冲突的灰色地带。与选项 1 相同的缺点 …
我正在尝试从Chrome上的模式获取文本。使用控制台,我可以获取内部文本,如下所示:
document.querySelector('.my-form > a').innerText
// returns http://a-url.com
Run Code Online (Sandbox Code Playgroud)
现在,在测试中,我可以使用
const myText = Selector('.my-form > a').innerText;
await t
.expect(myText).contains('url');
Run Code Online (Sandbox Code Playgroud)
我什至可以点击该网址
await t.click(myText);
Run Code Online (Sandbox Code Playgroud)
但是例如,我不能将内部文本放入变量中。我尝试从这篇文章中使用ClientFunction
const getUrl = ClientFunction(() => document.querySelector('.my-form > a').innerText);
test('My Test', async t => {
const text = await getUrl();
console.log(text);
});
// this results in
// TypeError: Cannot read property 'innerText' of null
Run Code Online (Sandbox Code Playgroud)
并尝试使用普通选择器,如本文所建议
const text = Selector('.my-form > a').innerText;
const inner = await text.textContent;
console.log(inner);
// prints: undefined
Run Code Online (Sandbox Code Playgroud)
如何从元素中提取文本?我了解t.selectText在这种情况下会受到限制,对吧?