Skip to content

Commit

Permalink
Merge branch 'angular_rework_development' into angular_grid_list_clas…
Browse files Browse the repository at this point in the history
…s_implementation
  • Loading branch information
AlinaLysenko committed Jan 18, 2024
2 parents f219d10 + cb5bbfb commit 2aab439
Show file tree
Hide file tree
Showing 187 changed files with 2,091 additions and 2,446 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import static java.lang.System.currentTimeMillis;

public class TestNGListener implements IInvokedMethodListener {
private Long start = currentTimeMillis();
private long start = currentTimeMillis();

@Override
public void beforeInvocation(IInvokedMethod m, ITestResult tr) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

public class TestNGListener implements IInvokedMethodListener {

private Long start = currentTimeMillis();
private long start = currentTimeMillis();

@Override
public void beforeInvocation(IInvokedMethod m, ITestResult tr) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.github.epam.angular.tests.elements.common;

import com.epam.jdi.light.elements.interfaces.base.ICoreElement;
import io.github.epam.TestsInit;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
Expand All @@ -19,6 +18,8 @@

public class SlideToggleTests extends TestsInit {

private static final String SLIDE_ME = "Slide me!";

@BeforeClass
public void before() {
slideTogglePage.open();
Expand All @@ -28,7 +29,7 @@ public void before() {

@Test(description = "Test verifies functionality of basic slide toggle")
public void basicToggleCheckedTest() {
basicSlideToggle.waitFor(ICoreElement::isEnabled);
basicSlideToggle.show();
basicSlideToggle.check();
basicSlideToggle.is().selected();
basicSlideToggle.uncheck();
Expand Down Expand Up @@ -67,6 +68,8 @@ public void resultToggleDisableTest() {
public void labelButtonTogglePositionTest() {
beforeLabelPositionRadioButton.click();
resultSlideToggle.has().labelBeforePosition();
resultSlideToggle.has().label(SLIDE_ME);
basicSlideToggle.has().labelAfterPosition();
basicSlideToggle.has().label(SLIDE_ME);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import static java.lang.System.currentTimeMillis;

public class TestNGListener implements IInvokedMethodListener {
private Long start = currentTimeMillis();
private long start = currentTimeMillis();

@Override
public void beforeInvocation(IInvokedMethod m, ITestResult tr) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,100 +14,100 @@

public class AutoCompleteAssert extends UIAssert<AutoCompleteAssert, AutoComplete> implements ITextAssert<AutoCompleteAssert> {

@JDIAction("Assert that '{name}' is expanded")
@JDIAction(value = "Assert that '{name}' is expanded", isAssert = true)
public AutoCompleteAssert expanded() {
jdiAssert(element().expanded(), Matchers.is(true), "ERROR MESSAGE IS REQUIRED");
return this;
}

@JDIAction("Assert that '{name}' is collapsed")
@JDIAction(value = "Assert that '{name}' is collapsed", isAssert = true)
public AutoCompleteAssert collapsed() {
jdiAssert(element().collapsed(), Matchers.is(true), "ERROR MESSAGE IS REQUIRED");
return this;
}

@JDIAction("Assert that '{name}' text {0}")
@JDIAction(value = "Assert that '{name}' text {0}", isAssert = true)
@Override
public AutoCompleteAssert text(String expected) {
jdiAssert(element().getText(), Matchers.is(expected));
return this;
}

@JDIAction("Assert that '{name}' text {0}")
@JDIAction(value = "Assert that '{name}' text {0}", isAssert = true)
@Override
public AutoCompleteAssert text(Matcher<String> condition) {
jdiAssert(element().getValue(), condition);
return this;
}

@JDIAction("Assert that '{name}' has placeholder {0}")
@JDIAction(value = "Assert that '{name}' has placeholder {0}", isAssert = true)
public AutoCompleteAssert placeholder(String expected) {
jdiAssert(element().placeholder(), Matchers.is(expected));
return this;
}

@JDIAction("Assert that '{name} is mandatory")
@JDIAction(value = "Assert that '{name} is mandatory", isAssert = true)
public AutoCompleteAssert mandatory() {
jdiAssert(element().isMandatory(), Matchers.is(true), "ERROR MESSAGE IS REQUIRED");
return this;
}

@JDIAction("Assert that '{name} is not mandatory")
@JDIAction(value = "Assert that '{name} is not mandatory", isAssert = true)
public AutoCompleteAssert notMandatory() {
jdiAssert(element().isMandatory(), Matchers.is(false), "ERROR MESSAGE IS REQUIRED");
return this;
}

@JDIAction("Assert that '{name}' has empty value")
@JDIAction(value = "Assert that '{name}' has empty value", isAssert = true)
@Override
public AutoCompleteAssert empty() {
jdiAssert(element().getValue(), Matchers.is(""));
return this;
}

@JDIAction("Assert that '{name} is invalid")
@JDIAction(value = "Assert that '{name} is invalid", isAssert = true)
public AutoCompleteAssert invalid() {
jdiAssert(element().isInvalidated(), Matchers.is(true), "ERROR MESSAGE IS REQUIRED");
return this;
}

@JDIAction("Assert that '{name} is valid")
@JDIAction(value = "Assert that '{name} is valid", isAssert = true)
public AutoCompleteAssert valid() {
jdiAssert(element().isInvalidated(), Matchers.is(false), "ERROR MESSAGE IS REQUIRED");
return this;
}

@JDIAction("Assert that '{name}' has display value")
@JDIAction(value = "Assert that '{name}' has display value", isAssert = true)
public AutoCompleteAssert displayValue(String expected) {
jdiAssert(element().getValue(), Matchers.is(expected));
return this;
}

@JDIAction("Assert that '{name}' has options")
@JDIAction(value = "Assert that '{name}' has options", isAssert = true)
public AutoCompleteAssert options(List<String> options) {
jdiAssert(element().options(), Matchers.is(options));
return this;
}

@JDIAction("Assert that '{name}' has groups")
@JDIAction(value = "Assert that '{name}' has groups", isAssert = true)
public AutoCompleteAssert groups(List<String> groups) {
jdiAssert(element().groups(), Matchers.is(groups));
return this;
}

@JDIAction("Assert that '{name}' has groups and options")
@JDIAction(value = "Assert that '{name}' has groups and options", isAssert = true)
public AutoCompleteAssert groupsAndOptions(Map<String, List<String>> expectedGroupsAndOptions) {
jdiAssert(element().groupsAndOptionsValues(), Matchers.is(expectedGroupsAndOptions));
return this;
}

@JDIAction("Assert that '{name}' has the {0} option being highlighted")
@JDIAction(value = "Assert that '{name}' has the {0} option being highlighted", isAssert = true)
public AutoCompleteAssert optionHighlighted(String option) {
jdiAssert(element().isOptionHighlighted(option), Matchers.is(true), "ERROR MESSAGE IS REQUIRED");
return this;
}

@JDIAction("Assert that '{name}' has the {0} option being not highlighted")
@JDIAction(value = "Assert that '{name}' has the {0} option being not highlighted", isAssert = true)
public AutoCompleteAssert optionNotHighlighted(String option) {
jdiAssert(element().isOptionHighlighted(option), Matchers.is(false), "ERROR MESSAGE IS REQUIRED");
return this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@

public class BadgeAssert extends UIAssert<BadgeAssert, Badge> {

@JDIAction("Assert that '{name}' has '{0}' color")
@JDIAction(value = "Assert that '{name}' has '{0}' color", isAssert = true)
public BadgeAssert color(String value) {
String actualColor = element().color();
jdiAssert(actualColor, Matchers.equalTo(value));
return this;
}

@JDIAction("Assert that '{name}' has text {0}")
@JDIAction(value = "Assert that '{name}' has text {0}", isAssert = true)
public BadgeAssert text(String value) {
final String actualText = element().getText();
jdiAssert(actualText, Matchers.is(value));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

public class BottomSheetAssert extends UIAssert<BottomSheetAssert, BottomSheet> {

@JDIAction("Assert that '{name}' has values '{0}'")
@JDIAction(value = "Assert that '{name}' has values '{0}'", isAssert = true)
public BottomSheetAssert values(final Matcher<? super List<String>> condition) {
jdiAssert(element().values(), condition);
return this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,47 +12,47 @@

public class ButtonAssert extends UIAssert<ButtonAssert, Button> implements HasBadgeAssert {

@JDIAction("Assert that '{name}' has text '{0}'")
@JDIAction(value = "Assert that '{name}' has text '{0}'", isAssert = true)
public ButtonAssert text(String expectedText) {
jdiAssert(element().text(), Matchers.is(expectedText));
return this;
}

@JDIAction("Assert that '{name}' is focused")
@JDIAction(value = "Assert that '{name}' is focused", isAssert = true)
public ButtonAssert focused() {
boolean actualFocused = element().focused();
jdiAssert(actualFocused, Matchers.is(true),
"Element is not focused");
return this;
}

@JDIAction("Assert that '{name}' color is '{0}'")
@JDIAction(value = "Assert that '{name}' color is '{0}'", isAssert = true)
public ButtonAssert color(String expectedColor) {
jdiAssert(element().color(), Matchers.equalToIgnoringCase(expectedColor.toLowerCase()));
return this;
}

@JDIAction("Assert that '{name}' color is '{0}'")
@JDIAction(value = "Assert that '{name}' color is '{0}'", isAssert = true)
public ButtonAssert color(AngularColors expectedColor) {
jdiAssert(element().color(), Matchers.is(expectedColor.getColor()));
return this;
}

@JDIAction("Assert that '{name}' has default color")
@JDIAction(value = "Assert that '{name}' has default color", isAssert = true)
public ButtonAssert defaultColor() {
jdiAssert(element().defaultColor(), Matchers.is(true),
"Element doesn't have default color.");
return this;
}

@JDIAction("Assert that '{name}' has visual type '{0}'")
@JDIAction(value = "Assert that '{name}' has visual type '{0}'", isAssert = true)
public ButtonAssert visualType(ButtonsTypes expectedType) {
ButtonsTypes actualVisualType = element().visualType();
jdiAssert(actualVisualType.getType(), Matchers.is(expectedType.getType()));
return this;
}

@JDIAction("Assert that '{name}' has icon")
@JDIAction(value = "Assert that '{name}' has icon", isAssert = true)
public ButtonAssert hasIcon() {
jdiAssert(element().hasIcon(), Matchers.is(true),
"Element doesn't have icon inside");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,84 +9,84 @@

public class ButtonToggleAssert extends UIAssert<ButtonToggleAssert, ButtonToggle> {

@JDIAction("Assert that '{name}' has '{0}' class")
@JDIAction(value = "Assert that '{name}' has '{0}' class", isAssert = true)
public ButtonToggleAssert assertButtonToggleIsSelected(String value) {
jdiAssert(element().isButtonToggleSelected(value), Matchers.is(true),
"Button toggle element is not selected");
return this;
}

@JDIAction("Assert that '{name}' has '{0}' class")
@JDIAction(value = "Assert that '{name}' has '{0}' class", isAssert = true)
public ButtonToggleAssert assertButtonToggleIsNotSelected(String value) {
jdiAssert(element().isButtonToggleSelected(value), Matchers.is(false),
"Button toggle element is selected");
return this;
}

@JDIAction("Assert that '{name}' has attr '{0}'")
@JDIAction(value = "Assert that '{name}' has attr '{0}'", isAssert = true)
public ButtonToggleAssert assertButtonToggleButtonIsPressed(String value) {
jdiAssert(element().isButtonToggleButtonPressed(value), Matchers.is(true),
"Button toggle element is not pressed");
return this;
}

@JDIAction("Assert that '{name}' with value '{0}' has text '{1}'")
@JDIAction(value = "Assert that '{name}' with value '{0}' has text '{1}'", isAssert = true)
public ButtonToggleAssert assertButtonToggleButtonHasText(String value, String text) {
jdiAssert(element().buttonToggleHasText(value, text), Matchers.is(true),
"Button toggle element text is not equal " + text);
return this;
}

@JDIAction("Assert that '{name}' has value '{0}'")
@JDIAction(value = "Assert that '{name}' has value '{0}'", isAssert = true)
public ButtonToggleAssert assertButtonToggleHasValue(String value) {
jdiAssert(element().buttonToggleHasValue(value), Matchers.is(true),
"Button toggle element value is not equal " + value);
return this;
}

@JDIAction("Assert that '{name}' with value '{0}' has aria-label '{1}'")
@JDIAction(value = "Assert that '{name}' with value '{0}' has aria-label '{1}'", isAssert = true)
public ButtonToggleAssert assertButtonToggleHasAriaLabel(String value, String ariaLabel) {
jdiAssert(element().buttonToggleHasAriaLabel(value, ariaLabel), Matchers.is(true),
"Button toggle aria-label is not equal " + ariaLabel);
return this;
}

@JDIAction("Assert that '{name}' has attr legacy appearance")
@JDIAction(value = "Assert that '{name}' has attr legacy appearance", isAssert = true)
public ButtonToggleAssert assertButtonToggleHasLegacyAppearance() {
jdiAssert(element().buttonToggleHasLegacyAppearance(), Matchers.is(true),
"Button toggle appearance is not legacy");
return this;
}

@JDIAction("Assert that '{name} is disabled'")
@JDIAction(value = "Assert that '{name} is disabled'", isAssert = true)
public ButtonToggleAssert assertButtonToggleIsDisabled() {
jdiAssert(element().buttonToggleDisabled(), Matchers.is(true),
"Button toggle is enabled");
return this;
}

@JDIAction("Assert that '{name}' in button-toggle is disabled")
@JDIAction(value = "Assert that '{name}' in button-toggle is disabled", isAssert = true)
public ButtonToggleAssert assertButtonInButtonToggleIsDisabled(String value) {
jdiAssert(element().isButtonToggleDisabled(value), Matchers.is(true),
"Button toggle element is enabled");
return this;
}

@JDIAction("Assert that '{name}' is vertical")
@JDIAction(value = "Assert that '{name}' is vertical", isAssert = true)
public ButtonToggleAssert assertButtonToggleVertical() {
jdiAssert(element().buttonToggleVertical(), Matchers.is(true),
"Button toggle is horizontal");
return this;
}

@JDIAction("Assert that '{name}' has ripple effect")
@JDIAction(value = "Assert that '{name}' has ripple effect", isAssert = true)
public ButtonToggleAssert assertButtonToggleWithRipple(String value) {
jdiAssert(element().buttonToggleHasNoRippleEffect(value), Matchers.is(false),
"Button toggle element does not have ripple effect");
return this;
}

@JDIAction("Assert that '{name}' has no ripple effect")
@JDIAction(value = "Assert that '{name}' has no ripple effect", isAssert = true)
public ButtonToggleAssert assertButtonToggleNoRipple(String value) {
jdiAssert(element().buttonToggleHasNoRippleEffect(value), Matchers.is(true),
"Button toggle element has ripple effect");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,25 @@
import static com.epam.jdi.light.asserts.core.SoftAssert.jdiAssert;

public class CardAssert extends UIAssert<CardAssert, Card> {
@JDIAction("Assert that '{name}' has text '{0}'")
@JDIAction(value = "Assert that '{name}' has text '{0}'", isAssert = true)
public CardAssert assertCardText(String value) {
jdiAssert(element().getCardText().equals(value), Matchers.is(true), "ERROR MESSAGE IS REQUIRED");
return this;
}

@JDIAction("Assert that '{name}' alt image attribute has text '{0}'")
@JDIAction(value = "Assert that '{name}' alt image attribute has text '{0}'", isAssert = true)
public CardAssert assertAltImageAttribute(String value) {
jdiAssert(element().getImage().getAttribute("alt").contains(value), Matchers.is(true), "ERROR MESSAGE IS REQUIRED");
return this;
}

@JDIAction("Assert that '{name}' src image attribute has text '{0}'")
@JDIAction(value = "Assert that '{name}' src image attribute has text '{0}'", isAssert = true)
public CardAssert assertSrcImageAttribute(String value) {
jdiAssert(element().getImage().getAttribute("src").contains(value), Matchers.is(true), "ERROR MESSAGE IS REQUIRED");
return this;
}

@JDIAction("Assert that '{name}' has '{0}' buttons")
@JDIAction(value = "Assert that '{name}' has '{0}' buttons", isAssert = true)
public CardAssert assertNumberOfButtonsOnCard(int number) {
jdiAssert(element().getButtons().size() == number, Matchers.is(true), "ERROR MESSAGE IS REQUIRED");
return this;
Expand Down
Loading

11 comments on commit 2aab439

@0pdd
Copy link
Collaborator

@0pdd 0pdd commented on 2aab439 Jan 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 5297-20b90066 discovered in jdi-light-material-ui-tests/src/main/java/io/github/com/pages/surfaces/CardPage.java) and submitted as #5350. Please, remember that the puzzle was not necessarily added in this particular commit. Maybe it was added earlier, but we discovered it only now.

@0pdd
Copy link
Collaborator

@0pdd 0pdd commented on 2aab439 Jan 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 5297-86d99708 discovered in jdi-light-material-ui-tests/src/main/java/io/github/com/pages/utils/PopoverHoverFrame.java) and submitted as #5351. Please, remember that the puzzle was not necessarily added in this particular commit. Maybe it was added earlier, but we discovered it only now.

@0pdd
Copy link
Collaborator

@0pdd 0pdd commented on 2aab439 Jan 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 5297-79e0a1b9 discovered in jdi-light-material-ui-tests/src/main/java/io/github/com/pages/utils/TransitionPage.java) and submitted as #5352. Please, remember that the puzzle was not necessarily added in this particular commit. Maybe it was added earlier, but we discovered it only now.

@0pdd
Copy link
Collaborator

@0pdd 0pdd commented on 2aab439 Jan 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 5291-2a4c19ba discovered in jdi-light-vuetify-tests/src/main/java/io/github/com/pages/ApplicationPage.java) and submitted as #5353. Please, remember that the puzzle was not necessarily added in this particular commit. Maybe it was added earlier, but we discovered it only now.

@0pdd
Copy link
Collaborator

@0pdd 0pdd commented on 2aab439 Jan 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 5298-081cb955 discovered in jdi-light-vuetify-tests/src/main/java/io/github/com/pages/AutocompletesPage.java) and submitted as #5354. Please, remember that the puzzle was not necessarily added in this particular commit. Maybe it was added earlier, but we discovered it only now.

@0pdd
Copy link
Collaborator

@0pdd 0pdd commented on 2aab439 Jan 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 5298-4ed4d440 discovered in jdi-light-vuetify-tests/src/main/java/io/github/com/pages/AutocompletesPage.java) and submitted as #5355. Please, remember that the puzzle was not necessarily added in this particular commit. Maybe it was added earlier, but we discovered it only now.

@0pdd
Copy link
Collaborator

@0pdd 0pdd commented on 2aab439 Jan 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 5298-7a6338ee discovered in jdi-light-vuetify-tests/src/main/java/io/github/com/pages/BadgesPage.java) and submitted as #5356. Please, remember that the puzzle was not necessarily added in this particular commit. Maybe it was added earlier, but we discovered it only now.

@0pdd
Copy link
Collaborator

@0pdd 0pdd commented on 2aab439 Jan 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 5298-34355e7f discovered in jdi-light-vuetify-tests/src/main/java/io/github/com/pages/BannersPage.java) and submitted as #5357. Please, remember that the puzzle was not necessarily added in this particular commit. Maybe it was added earlier, but we discovered it only now.

@0pdd
Copy link
Collaborator

@0pdd 0pdd commented on 2aab439 Jan 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 5298-b37e9d11 discovered in jdi-light-vuetify-tests/src/main/java/io/github/com/pages/BreadcrumbsPage.java) and submitted as #5358. Please, remember that the puzzle was not necessarily added in this particular commit. Maybe it was added earlier, but we discovered it only now.

@0pdd
Copy link
Collaborator

@0pdd 0pdd commented on 2aab439 Jan 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 5298-206f0a18 discovered in jdi-light-vuetify-tests/src/main/java/io/github/com/pages/CardsPage.java) and submitted as #5359. Please, remember that the puzzle was not necessarily added in this particular commit. Maybe it was added earlier, but we discovered it only now.

@0pdd
Copy link
Collaborator

@0pdd 0pdd commented on 2aab439 Jan 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't able to retrieve PDD puzzles from the code base and submit them to github. If you think that it's a bug on our side, please submit it to yegor256/0pdd:

POST https://api.github.com/repos/jdi-testing/jdi-light/issues: 403 - You have exceeded a secondary rate limit and have been temporarily blocked from content creation. Please retry your request again later. If you reach out to GitHub Support for help, please include the request ID...

Please, copy and paste this stack trace to GitHub:

Octokit::TooManyRequests
POST https://api.github.com/repos/jdi-testing/jdi-light/issues: 403 - You have exceeded a secondary rate limit and have been temporarily blocked from content creation. Please retry your request again later. If you reach out to GitHub Support for help, please include the request ID C88A:3D780F:A5CA51E:A797359:65A9072B. // See: https://docs.github.com/rest/overview/rate-limits-for-the-rest-api#about-secondary-rate-limits
/app/vendor/bundle/ruby/3.1.0/gems/octokit-7.1.0/lib/octokit/response/raise_error.rb:14:in `on_complete'
/app/vendor/bundle/ruby/3.1.0/gems/faraday-2.7.11/lib/faraday/middleware.rb:18:in `block in call'
/app/vendor/bundle/ruby/3.1.0/gems/faraday-2.7.11/lib/faraday/response.rb:42:in `on_complete'
/app/vendor/bundle/ruby/3.1.0/gems/faraday-2.7.11/lib/faraday/middleware.rb:17:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/octokit-7.1.0/lib/octokit/middleware/follow_redirects.rb:73:in `perform_with_redirection'
/app/vendor/bundle/ruby/3.1.0/gems/octokit-7.1.0/lib/octokit/middleware/follow_redirects.rb:61:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/faraday-2.7.11/lib/faraday/rack_builder.rb:153:in `build_response'
/app/vendor/bundle/ruby/3.1.0/gems/faraday-2.7.11/lib/faraday/connection.rb:444:in `run_request'
/app/vendor/bundle/ruby/3.1.0/gems/faraday-2.7.11/lib/faraday/connection.rb:280:in `post'
/app/vendor/bundle/ruby/3.1.0/gems/sawyer-0.9.2/lib/sawyer/agent.rb:99:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/octokit-7.1.0/lib/octokit/connection.rb:156:in `request'
/app/vendor/bundle/ruby/3.1.0/gems/octokit-7.1.0/lib/octokit/connection.rb:28:in `post'
/app/vendor/bundle/ruby/3.1.0/gems/octokit-7.1.0/lib/octokit/client/issues.rb:102:in `create_issue'
/app/objects/vcs/github.rb:75:in `create_issue'
/app/objects/tickets/tickets.rb:44:in `submit'
/app/objects/tickets/milestone_tickets.rb:35:in `submit'
/app/objects/tickets/logged_tickets.rb:50:in `submit'
/app/objects/tickets/tagged_tickets.rb:35:in `submit'
/app/objects/tickets/commit_tickets.rb:36:in `submit'
/app/objects/tickets/emailed_tickets.rb:35:in `submit'
/app/objects/tickets/sentry_tickets.rb:45:in `submit'
/app/objects/puzzles.rb:109:in `block in expose'
/app/objects/puzzles.rb:97:in `loop'
/app/objects/puzzles.rb:97:in `expose'
/app/objects/puzzles.rb:44:in `deploy'
/app/objects/jobs/job.rb:38:in `proceed'
/app/objects/jobs/job_starred.rb:32:in `proceed'
/app/objects/jobs/job_recorded.rb:31:in `proceed'
/app/objects/jobs/job_emailed.rb:33:in `proceed'
/app/objects/jobs/job_commiterrors.rb:33:in `proceed'
/app/objects/jobs/job_detached.rb:48:in `exclusive'
/app/objects/jobs/job_detached.rb:36:in `block in proceed'
/app/objects/jobs/job_detached.rb:36:in `fork'
/app/objects/jobs/job_detached.rb:36:in `proceed'
/app/0pdd.rb:531:in `process_request'
/app/0pdd.rb:367:in `block in <top (required)>'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1706:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1706:in `block in compile!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1019:in `block (3 levels) in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1037:in `route_eval'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1019:in `block (2 levels) in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1068:in `block in process_route'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1066:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1066:in `process_route'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1017:in `block in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1014:in `each'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1014:in `route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1138:in `block in dispatch!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1109:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1109:in `invoke'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1133:in `dispatch!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:949:in `block in call!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1109:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1109:in `invoke'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:949:in `call!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:938:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/deflater.rb:44:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/xss_header.rb:20:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/path_traversal.rb:18:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/json_csrf.rb:28:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/base.rb:53:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/base.rb:53:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-3.0.6/lib/rack/protection/frame_options.rb:33:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/logger.rb:17:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/common_logger.rb:38:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:261:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:254:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/head.rb:12:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/method_override.rb:24:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:219:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:2018:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1576:in `block in call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1792:in `synchronize'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-3.0.6/lib/sinatra/base.rb:1576:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/handler/webrick.rb:95:in `service'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/httpserver.rb:140:in `service'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/httpserver.rb:96:in `run'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/server.rb:310:in `block in start_thread'

Please sign in to comment.