• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wmixvideo / nfe / #6582

17 Jul 2025 09:30PM UTC coverage: 51.231% (+24.2%) from 26.996%
#6582

push

web-flow
Adequação do mapeamento de infLocalCarrega e infLocalDescarrega ao xs:choice do schema MDF-e (#1054)

* Adequação do mapeamento de infLocalCarrega e infLocalDescarrega ao xs:choice do schema MDF-e

* Adequação do mapeamento de infLocalCarrega e infLocalDescarrega ao xs:choice do schema MDF-e

14006 of 27339 relevant lines covered (51.23%)

0.51 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

77.07
/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/CTeNotaInfoIdentificacao.java
1
package com.fincatto.documentofiscal.cte300.classes.nota;
2

3
import com.fincatto.documentofiscal.DFAmbiente;
4
import com.fincatto.documentofiscal.DFBase;
5
import com.fincatto.documentofiscal.DFModelo;
6
import com.fincatto.documentofiscal.DFUnidadeFederativa;
7
import com.fincatto.documentofiscal.cte.CTTipoEmissao;
8
import com.fincatto.documentofiscal.cte300.classes.*;
9
import com.fincatto.documentofiscal.validadores.DFIntegerValidador;
10
import com.fincatto.documentofiscal.validadores.DFStringValidador;
11
import org.simpleframework.xml.Element;
12
import org.simpleframework.xml.Namespace;
13
import org.simpleframework.xml.Root;
14

15
import java.time.LocalDateTime;
16
import java.time.ZonedDateTime;
17

18
/**
19
 * @author Caio
20
 * @info Identificacao do CT-e
21
 */
22

23
@Root(name = "ide")
24
@Namespace(reference = "http://www.portalfiscal.inf.br/cte")
25
public class CTeNotaInfoIdentificacao extends DFBase {
26
    private static final long serialVersionUID = 95577143198511960L;
27
    
28
    @Element(name = "cUF")
29
    private DFUnidadeFederativa codigoUF;
30
    
31
    @Element(name = "cCT")
32
    private String codigoNumerico;
33
    
34
    @Element(name = "CFOP")
35
    private String cfop;
36
    
37
    @Element(name = "natOp")
38
    private String naturezaOperacao;
39
    
40
    @Element(name = "mod")
41
    private DFModelo modelo;
42
    
43
    @Element(name = "serie")
44
    private Integer serie;
45
    
46
    @Element(name = "nCT")
47
    private Integer numero;
48
    
49
    @Element(name = "dhEmi")
50
    private ZonedDateTime dataEmissao;
51
    
52
    @Element(name = "tpImp")
53
    private CTTipoImpressao tipoImpressao;
54
    
55
    @Element(name = "tpEmis")
56
    private CTTipoEmissao tipoEmissao;
57
    
58
    @Element(name = "cDV")
59
    private Integer digitoVerificador;
60
    
61
    @Element(name = "tpAmb")
62
    private DFAmbiente ambiente;
63
    
64
    @Element(name = "tpCTe")
65
    private CTFinalidade finalidade;
66
    
67
    @Element(name = "procEmi")
68
    private CTProcessoEmissao processoEmissao;
69
    
70
    @Element(name = "verProc")
71
    private String versaoProcessoEmissao;
72
    
73
    @Element(name = "indGlobalizado", required = false)
74
    private Integer indicadorGlobalizado;
75
    
76
    @Element(name = "cMunEnv")
77
    private String codigoMunicipioEnvio;
78
    
79
    @Element(name = "xMunEnv")
80
    private String descricaoMunicipioEnvio;
81
    
82
    @Element(name = "UFEnv")
83
    private String siglaUFEnvio;
84
    
85
    @Element(name = "modal")
86
    private CTModal modalidadeFrete;
87
    
88
    @Element(name = "tpServ")
89
    private CTTipoServico tipoServico;
90
    
91
    @Element(name = "cMunIni")
92
    private String codigoMunicipioInicio;
93
    
94
    @Element(name = "xMunIni")
95
    private String descricaoMunicipioInicio;
96
    
97
    @Element(name = "UFIni")
98
    private String siglaUfInicio;
99
    
100
    @Element(name = "cMunFim")
101
    private String codigoMunicipioFim;
102
    
103
    @Element(name = "xMunFim")
104
    private String descricaoMunicipioFim;
105
    
106
    @Element(name = "UFFim")
107
    private String siglaUfFim;
108
    
109
    @Element(name = "retira")
110
    private CTRetirada retira;
111
    
112
    @Element(name = "xDetRetira", required = false)
113
    private String detalheRetira;
114
    
115
    @Element(name = "indIEToma")
116
    private CTIndicadorTomador indIEToma;
117
    
118
    @Element(name = "toma3", required = false)
119
    private CTeNotaInfoIdentificacaoTomadorServico3 tomadorServico3;
120
    
121
    @Element(name = "toma4", required = false)
122
    private CTeNotaInfoIdentificacaoTomadorServico4 tomadorServico4;
123
    
124
    @Element(name = "dhCont", required = false)
125
    private LocalDateTime dataContingencia;
126
    
127
    @Element(name = "xJust", required = false)
128
    private String justificativa;
129
    
130
    public CTeNotaInfoIdentificacao() {
1✔
131
        this.codigoUF = null;
1✔
132
        this.codigoNumerico = null;
1✔
133
        this.cfop = null;
1✔
134
        this.naturezaOperacao = null;
1✔
135
        this.modelo = null;
1✔
136
        this.serie = null;
1✔
137
        this.numero = null;
1✔
138
        this.dataEmissao = null;
1✔
139
        this.tipoImpressao = null;
1✔
140
        this.tipoEmissao = null;
1✔
141
        this.digitoVerificador = null;
1✔
142
        this.ambiente = null;
1✔
143
        this.finalidade = null;
1✔
144
        this.processoEmissao = null;
1✔
145
        this.versaoProcessoEmissao = null;
1✔
146
        this.indicadorGlobalizado = null;
1✔
147
        this.codigoMunicipioEnvio = null;
1✔
148
        this.descricaoMunicipioEnvio = null;
1✔
149
        this.siglaUFEnvio = null;
1✔
150
        this.modalidadeFrete = null;
1✔
151
        this.tipoServico = null;
1✔
152
        this.codigoMunicipioInicio = null;
1✔
153
        this.descricaoMunicipioInicio = null;
1✔
154
        this.siglaUfInicio = null;
1✔
155
        this.codigoMunicipioFim = null;
1✔
156
        this.descricaoMunicipioFim = null;
1✔
157
        this.siglaUfFim = null;
1✔
158
        this.retira = null;
1✔
159
        this.detalheRetira = null;
1✔
160
        this.indIEToma = null;
1✔
161
        this.tomadorServico3 = null;
1✔
162
        this.tomadorServico4 = null;
1✔
163
        this.dataContingencia = null;
1✔
164
        this.justificativa = null;
1✔
165
    }
1✔
166
    
167
    public DFUnidadeFederativa getCodigoUF() {
168
        return this.codigoUF;
×
169
    }
170
    
171
    /**
172
     * Codigo da UF do emitente do CT-e.
173
     */
174
    public void setCodigoUF(final DFUnidadeFederativa codigoUF) {
175
        this.codigoUF = codigoUF;
1✔
176
    }
1✔
177
    
178
    public String getCodigoNumerico() {
179
        return this.codigoNumerico;
×
180
    }
181
    
182
    /**
183
     * Codigo numerico que compoe a Chave de Acesso.<br>
184
     * Numero aleatorio gerado pelo emitente para cada CT-e, com o objetivo de evitar acessos indevidos ao documento.
185
     */
186
    public void setCodigoNumerico(final String codigoNumerico) {
187
        DFStringValidador.exatamente8N(codigoNumerico, "Codigo Numerico");
1✔
188
        this.codigoNumerico = codigoNumerico;
1✔
189
    }
1✔
190
    
191
    public String getCfop() {
192
        return this.cfop;
×
193
    }
194
    
195
    /**
196
     * Codigo Fiscal de Operacoes e Prestacoes
197
     */
198
    public void setCfop(final String cfop) {
199
        DFStringValidador.exatamente4N(cfop, "CFOP");
1✔
200
        this.cfop = cfop;
1✔
201
    }
1✔
202
    
203
    public String getNaturezaOperacao() {
204
        return this.naturezaOperacao;
×
205
    }
206
    
207
    /**
208
     * Natureza da Operacao
209
     */
210
    public void setNaturezaOperacao(final String naturezaOperacao) {
211
        DFStringValidador.tamanho2ate60(naturezaOperacao, "Natureza da Operacao");
1✔
212
        this.naturezaOperacao = naturezaOperacao;
1✔
213
    }
1✔
214
    
215
    public DFModelo getModelo() {
216
        return this.modelo;
×
217
    }
218
    
219
    /**
220
     * Modelo do documento fiscal<br>
221
     * Utilizar o codigo 57 para identificacao do CT-e, emitido em substituicao aos modelos de conhecimentos em papel.
222
     */
223
    public void setModelo(final DFModelo modelo) {
224
        this.modelo = modelo;
1✔
225
    }
1✔
226
    
227
    public Integer getSerie() {
228
        return this.serie;
×
229
    }
230
    
231
    /**
232
     * Serie do CT-e<br>
233
     * Preencher com "0" no caso de serie unica
234
     */
235
    public void setSerie(final Integer serie) {
236
        DFIntegerValidador.tamanho3(serie, "Serie");
1✔
237
        this.serie = serie;
1✔
238
    }
1✔
239
    
240
    public Integer getNumero() {
241
        return this.numero;
×
242
    }
243
    
244
    /**
245
     * Numero do CT-e
246
     */
247
    public void setNumero(final Integer numero) {
248
        DFIntegerValidador.tamanho9(numero, "Numero");
1✔
249
        this.numero = numero;
1✔
250
    }
1✔
251
    
252
    public ZonedDateTime getDataEmissao() {
253
        return this.dataEmissao;
×
254
    }
255
    
256
    /**
257
     * Data e hora de emissao do CT-e<br>
258
     * Formato AAAA-MM-DDTHH:MM:DD TZD
259
     */
260
    public void setDataEmissao(final ZonedDateTime dataEmissao) {
261
        this.dataEmissao = dataEmissao;
1✔
262
    }
1✔
263
    
264
    public CTTipoImpressao getTipoImpressao() {
265
        return this.tipoImpressao;
×
266
    }
267
    
268
    /**
269
     * Formato de impressao do DACTE<br>
270
     * Preencher com: 1 - Retrato; 2 - Paisagem.
271
     */
272
    public void setTipoImpressao(final CTTipoImpressao tipoImpressao) {
273
        this.tipoImpressao = tipoImpressao;
1✔
274
    }
1✔
275
    
276
    public CTTipoEmissao getTipoEmissao() {
277
        return this.tipoEmissao;
×
278
    }
279
    
280
    /**
281
     * Forma de emissao do CT-e<br>
282
     * Preencher com:<br>
283
     * 1 - Normal;<br>
284
     * 4 - EPEC pela SVC; 5 - Contingencia FSDA;<br>
285
     * 7 - Autorizacao pela SVC-RS;<br>
286
     * 8 - Autorizacao pela SVC-SP;<br>
287
     */
288
    public void setTipoEmissao(final CTTipoEmissao tipoEmissao) {
289
        this.tipoEmissao = tipoEmissao;
1✔
290
    }
1✔
291
    
292
    public Integer getDigitoVerificador() {
293
        return this.digitoVerificador;
×
294
    }
295
    
296
    /**
297
     * Digito Verificador da chave de acesso do CT-e<br>
298
     * Informar o digito de controle da chave de acesso do CT-e, que deve ser calculado com a aplicacao do algoritmo modulo 11 (base 2,9) da chave de acesso.
299
     */
300
    public void setDigitoVerificador(final Integer digitoVerificador) {
301
        DFIntegerValidador.exatamente1(digitoVerificador, "DV");
1✔
302
        this.digitoVerificador = digitoVerificador;
1✔
303
    }
1✔
304
    
305
    public DFAmbiente getAmbiente() {
306
        return this.ambiente;
×
307
    }
308
    
309
    /**
310
     * Tipo do Ambiente<br>
311
     * Preencher com:<br>
312
     * 1 - Producao;<br>
313
     * 2 - Homologacao
314
     */
315
    public void setAmbiente(final DFAmbiente ambiente) {
316
        this.ambiente = ambiente;
1✔
317
    }
1✔
318
    
319
    public CTFinalidade getFinalidade() {
320
        return this.finalidade;
×
321
    }
322
    
323
    /**
324
     * Tipo do CT-e<br>
325
     * Preencher com:<br>
326
     * 0 - CT-e Normal;<br>
327
     * 1 - CT-e de Complemento de Valores;<br>
328
     * 2 - CT-e de Anulacao;<br>
329
     * 3 - CT-e Substituto
330
     */
331
    public void setFinalidade(final CTFinalidade finalidade) {
332
        this.finalidade = finalidade;
1✔
333
    }
1✔
334
    
335
    public CTProcessoEmissao getProcessoEmissao() {
336
        return this.processoEmissao;
×
337
    }
338
    
339
    /**
340
     * Identificador do processo de emissao do CT-e<br>
341
     * Preencher com:<br>
342
     * 0 - emissao de CT-e com aplicativo do contribuinte;<br>
343
     * 3- emissao CT-e pelo contribuinte com aplicativo fornecido pelo Fisco.
344
     */
345
    public void setProcessoEmissao(final CTProcessoEmissao processoEmissao) {
346
        this.processoEmissao = processoEmissao;
1✔
347
    }
1✔
348
    
349
    public String getVersaoProcessoEmissao() {
350
        return this.versaoProcessoEmissao;
×
351
    }
352
    
353
    /**
354
     * Versao do processo de emissao<br>
355
     * Iinformar a versao do aplicativo emissor de CT-e.
356
     */
357
    public void setVersaoProcessoEmissao(final String versaoProcessoEmissao) {
358
        DFStringValidador.tamanho20(versaoProcessoEmissao, "Versao Aplicativo Emissor");
1✔
359
        this.versaoProcessoEmissao = versaoProcessoEmissao;
1✔
360
    }
1✔
361
    
362
    public Integer getIndicadorGlobalizado() {
363
        return this.indicadorGlobalizado;
×
364
    }
365
    
366
    /**
367
     * Indicador de CT-e Globalizado<br>
368
     * Informar valor 1 quando for Globalizado e nao informar a tag quando nao tratar de CT-e Globalizado
369
     */
370
    public void setIndicadorGlobalizado(final Integer indicadorGlobalizado) {
371
        DFIntegerValidador.exatamente1(indicadorGlobalizado, "Indicador de CT-e Globalizado");
1✔
372
        this.indicadorGlobalizado = indicadorGlobalizado;
1✔
373
    }
1✔
374
    
375
    public String getCodigoMunicipioEnvio() {
376
        return this.codigoMunicipioEnvio;
×
377
    }
378
    
379
    /**
380
     * Codigo do Municipio de envio do CT-e (de onde o documento foi transmitido)<br>
381
     * Utilizar a tabela do IBGE. Informar 9999999 para as operacoes com o exterior.
382
     */
383
    public void setCodigoMunicipioEnvio(final String codigoMunicipioEnvio) {
384
        DFStringValidador.exatamente7N(codigoMunicipioEnvio, "Codigo do Municipio de envio do CT-e");
1✔
385
        this.codigoMunicipioEnvio = codigoMunicipioEnvio;
1✔
386
    }
1✔
387
    
388
    public String getDescricaoMunicipioEnvio() {
389
        return this.descricaoMunicipioEnvio;
×
390
    }
391
    
392
    /**
393
     * Nome do Municipio de envio do CT-e (de onde o documento foi transmitido)<br>
394
     * Informar PAIS/Municipio para as operacoes com o exterior.
395
     */
396
    public void setDescricaoMunicipioEnvio(final String descricaoMunicipioEnvio) {
397
        DFStringValidador.tamanho2ate60(descricaoMunicipioEnvio, "Nome do Municipio de envio do CT-e");
1✔
398
        this.descricaoMunicipioEnvio = descricaoMunicipioEnvio;
1✔
399
    }
1✔
400
    
401
    public String getSiglaUFEnvio() {
402
        return this.siglaUFEnvio;
×
403
    }
404
    
405
    /**
406
     * Sigla da UF de envio do CT-e (de onde o documento foi transmitido)<br>
407
     * Informar 'EX' para operacoes com o exterior.
408
     */
409
    public void setSiglaUFEnvio(final String siglaUFEnvio) {
410
        DFStringValidador.exatamente2(siglaUFEnvio, "Sigla da UF de envio do CT-e");
1✔
411
        this.siglaUFEnvio = siglaUFEnvio;
1✔
412
    }
1✔
413
    
414
    public CTModal getModalidadeFrete() {
415
        return this.modalidadeFrete;
×
416
    }
417
    
418
    /**
419
     * Modal<br>
420
     * Preencher com:<br>
421
     * 01 - Rodoviario;<br>
422
     * 02 - Aereo;<br>
423
     * 03 - Aquaviario;<br>
424
     * 04 - Ferroviario;<br>
425
     * 05 - Dutoviario;<br>
426
     * 06 - Multimodal;
427
     */
428
    public void setModalidadeFrete(final CTModal modalidadeFrete) {
429
        this.modalidadeFrete = modalidadeFrete;
1✔
430
    }
1✔
431
    
432
    public CTTipoServico getTipoServico() {
433
        return this.tipoServico;
×
434
    }
435
    
436
    /**
437
     * Tipo do Servico<br>
438
     * Preencher com:<br>
439
     * 0 - Normal;<br>
440
     * 1 - Subcontratacao;<br>
441
     * 2 - Redespacho;<br>
442
     * 3 - Redespacho Intermediario;<br>
443
     * 4 - Servico Vinculado a Multimodal
444
     */
445
    public void setTipoServico(final CTTipoServico tipoServico) {
446
        this.tipoServico = tipoServico;
1✔
447
    }
1✔
448
    
449
    public String getCodigoMunicipioInicio() {
450
        return this.codigoMunicipioInicio;
×
451
    }
452
    
453
    /**
454
     * Codigo do Municipio de inicio da prestacao<br>
455
     * Utilizar a tabela do IBGE. Informar 9999999 para operacoes com o exterior.
456
     */
457
    public void setCodigoMunicipioInicio(final String codigoMunicipioInicio) {
458
        DFStringValidador.exatamente7N(codigoMunicipioInicio, "Codigo do Municipio de inicio da prestacao");
1✔
459
        this.codigoMunicipioInicio = codigoMunicipioInicio;
1✔
460
    }
1✔
461
    
462
    public String getDescricaoMunicipioInicio() {
463
        return this.descricaoMunicipioInicio;
×
464
    }
465
    
466
    /**
467
     * Nome do Municipio do inicio da prestacao<br>
468
     * Informar 'EXTERIOR' para operacoes com o exterior.
469
     */
470
    public void setDescricaoMunicipioInicio(final String descricaoMunicipioInicio) {
471
        DFStringValidador.tamanho2ate60(descricaoMunicipioInicio, "Nome do Municipio do inicio da prestacao");
1✔
472
        this.descricaoMunicipioInicio = descricaoMunicipioInicio;
1✔
473
    }
1✔
474
    
475
    public String getSiglaUfInicio() {
476
        return this.siglaUfInicio;
×
477
    }
478
    
479
    /**
480
     * UF do inicio da prestacao<br>
481
     * Informar 'EX' para operacoes com o exterior.
482
     */
483
    public void setSiglaUfInicio(final String siglaUfInicio) {
484
        DFStringValidador.exatamente2(siglaUfInicio, "UF do inicio da prestacao");
1✔
485
        this.siglaUfInicio = siglaUfInicio;
1✔
486
    }
1✔
487
    
488
    public String getCodigoMunicipioFim() {
489
        return this.codigoMunicipioFim;
×
490
    }
491
    
492
    /**
493
     * Codigo do Municipio de termino da prestacao<br>
494
     * Utilizar a tabela do IBGE. Informar 9999999 para operacoes com o exterior.
495
     */
496
    public void setCodigoMunicipioFim(final String codigoMunicipioFim) {
497
        DFStringValidador.exatamente7N(codigoMunicipioFim, "Codigo do Municipio de termino da prestacao");
1✔
498
        this.codigoMunicipioFim = codigoMunicipioFim;
1✔
499
    }
1✔
500
    
501
    public String getDescricaoMunicipioFim() {
502
        return this.descricaoMunicipioFim;
×
503
    }
504
    
505
    /**
506
     * Nome do Municipio do termino da prestacao<br>
507
     * Informar 'EXTERIOR' para operacoes com o exterior.
508
     */
509
    public void setDescricaoMunicipioFim(final String descricaoMunicipioFim) {
510
        DFStringValidador.tamanho2ate60(descricaoMunicipioFim, "Nome do Municipio do termino da prestacao");
1✔
511
        this.descricaoMunicipioFim = descricaoMunicipioFim;
1✔
512
    }
1✔
513
    
514
    public String getSiglaUfFim() {
515
        return this.siglaUfFim;
×
516
    }
517
    
518
    /**
519
     * UF do termino da prestacao<br>
520
     * Informar 'EX' para operacoes com o exterior.
521
     */
522
    public void setSiglaUfFim(final String siglaUfFim) {
523
        DFStringValidador.exatamente2(siglaUfFim, "UF do termino da prestacao");
1✔
524
        this.siglaUfFim = siglaUfFim;
1✔
525
    }
1✔
526
    
527
    public CTRetirada getRetira() {
528
        return this.retira;
×
529
    }
530
    
531
    /**
532
     * Indicador se o Recebedor retira no Aeroporto, Filial, Porto ou Estacao de Destino?<br>
533
     * Preencher com:<br>
534
     * 0 - sim;<br>
535
     * 1 - nao
536
     */
537
    public void setRetira(final CTRetirada retira) {
538
        this.retira = retira;
1✔
539
    }
1✔
540
    
541
    public String getDetalheRetira() {
542
        return this.detalheRetira;
×
543
    }
544
    
545
    /**
546
     * Detalhes da retirada
547
     */
548
    public void setDetalheRetira(final String detalheRetira) {
549
        DFStringValidador.tamanho160(detalheRetira, "Detalhes da retirada");
1✔
550
        this.detalheRetira = detalheRetira;
1✔
551
    }
1✔
552
    
553
    public CTIndicadorTomador getIndIEToma() {
554
        return this.indIEToma;
×
555
    }
556
    
557
    /**
558
     * Indicador do papel do tomador na prestacao do servico:<br>
559
     * 1 – Contribuinte ICMS;<br>
560
     * 2 – Contribuinte isento de inscricao;<br>
561
     * 9 – Nao Contribuinte<br>
562
     * Aplica-se ao tomador que for indicado no toma3 ou toma4
563
     */
564
    public void setIndIEToma(final CTIndicadorTomador indIEToma) {
565
        this.indIEToma = indIEToma;
1✔
566
    }
1✔
567
    
568
    public CTeNotaInfoIdentificacaoTomadorServico3 getTomadorServico3() {
569
        return this.tomadorServico3;
×
570
    }
571
    
572
    /**
573
     * Indicador do "papel" do tomador do servico no CT-e
574
     */
575
    public void setTomadorServico3(final CTeNotaInfoIdentificacaoTomadorServico3 toma3) {
576
        this.tomadorServico3 = toma3;
1✔
577
    }
1✔
578
    
579
    public CTeNotaInfoIdentificacaoTomadorServico4 getTomadorServico4() {
580
        return this.tomadorServico4;
×
581
    }
582
    
583
    /**
584
     * Indicador do "papel" do tomador do servico no CT-e
585
     */
586
    public void setTomadorServico4(final CTeNotaInfoIdentificacaoTomadorServico4 toma4) {
587
        this.tomadorServico4 = toma4;
×
588
    }
×
589
    
590
    public LocalDateTime getDataContingencia() {
591
        return this.dataContingencia;
×
592
    }
593
    
594
    /**
595
     * Data e Hora da entrada em contingencia<br>
596
     * Informar a data e hora no formato AAAA-MM-DDTHH:MM:SS
597
     */
598
    public void setDataContingencia(final LocalDateTime dataContingencia) {
599
        this.dataContingencia = dataContingencia;
1✔
600
    }
1✔
601
    
602
    public String getJustificativa() {
603
        return this.justificativa;
×
604
    }
605
    
606
    /**
607
     * Justificativa da entrada em contingencia
608
     */
609
    public void setJustificativa(final String justificativa) {
610
        DFStringValidador.tamanho15a256(justificativa, "Justificativa da entrada em contingencia");
1✔
611
        this.justificativa = justificativa;
1✔
612
    }
1✔
613
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc